pass files from main to formats as QStrings respecting the local encoding.
authortsteven4 <tsteven4@gmail.com>
Sun, 7 Feb 2016 21:05:51 +0000 (14:05 -0700)
committertsteven4 <tsteven4@gmail.com>
Sun, 7 Feb 2016 21:05:51 +0000 (14:05 -0700)
118 files changed:
alan.cc
an1.cc
bcr.cc
brauniger_iq.cc
bushnell.cc
bushnell_trl.cc
compegps.cc
cst.cc
defs.h
delbin.cc
delgpl.cc
destinator.cc
dg-100.cc
dmtlog.cc
easygps.cc
energympro.cc
enigma.cc
exif.cc
f90g_track.cc
g7towin.cc
garmin.cc
garmin_fit.cc
garmin_gpi.cc
garmin_txt.cc
garmin_xt.cc
gbfile.cc
gdb.cc
geo.cc
ggv_bin.cc
ggv_log.cc
ggv_ovl.cc
globalsat_sport.cc
glogbook.cc
gnav_trl.cc
google.cc
googledir.cc
gopal.cc
gpssim.cc
gpsutil.cc
gpx.cc
gtm.cc
gtrnctr.cc
hiketech.cc
holux.cc
html.cc
humminbird.cc
igc.cc
ignrando.cc
igo8.cc
ik3d.cc
itracku.cc
jogmap.cc
jtr.cc
kml.cc
lmx.cc
lowranceusr.cc
lowranceusr4.cc
maggeo.cc
magproto.cc
main.cc
mapasia.cc
mapbar_track.cc
mapfactor.cc
mapsend.cc
mapsource.cc
mmo.cc
mtk_locus.cc
mtk_logger.cc
mynav.cc
navicache.cc
naviguide.cc
navilink.cc
navitel.cc
netstumbler.cc
nmea.cc
nmn4.cc
osm.cc
ozi.cc
pcx.cc
pocketfms_bc.cc
pocketfms_fp.cc
pocketfms_wp.cc
psitrex.cc
random.cc
raymarine.cc
saroute.cc
sbn.cc
sbp.cc
shape.cc
skyforce.cc
skytraq.cc
stmsdf.cc
stmwpp.cc
subrip.cc
tef_xml.cc
teletype.cc
text.cc
tiger.cc
tmpro.cc
tomtom.cc
tpg.cc
tpo.cc
unicsv.cc
util.cc
v900.cc
vcf.cc
vidaone.cc
vitosmt.cc
vitovtt.cc
vpl.cc
wbt-200.cc
wfff_xml.cc
wintec_tes.cc
xcsv.cc
xmlgeneric.cc
xmlgeneric.h
xol.cc
yahoo.cc

diff --git a/alan.cc b/alan.cc
index 40d539da7e37ddac368bc2e982ac33b16ff13587..046e932598f1cee2d07ad1bed13a975ca89bcfad 100644 (file)
--- a/alan.cc
+++ b/alan.cc
@@ -959,7 +959,7 @@ static void trl_write(void)
 
 /**************************************************************************/
 
-static void alan_rd_init(const char* fname)
+static void alan_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "rb", MYNAME);
 }
@@ -971,7 +971,7 @@ static void alan_rd_deinit(void)
 }
 
 
-static void alan_wr_init(const char* fname)
+static void alan_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "wb", MYNAME);
 }
diff --git a/an1.cc b/an1.cc
index b261c82ffd4eb77aa51be486fd824e165553a54e..2d4893b9673b556e2cc85d5dda875d5c007afcaa 100644 (file)
--- a/an1.cc
+++ b/an1.cc
@@ -1190,7 +1190,7 @@ Init_Road_Changes(void)
 }
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   infile = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -1211,7 +1211,7 @@ my_read(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   outfile = gbfopen_le(fname, "wb", MYNAME);
   Init_Output_Type();
diff --git a/bcr.cc b/bcr.cc
index 87f5bb5c435c3ff190001796db03338e20f01e73..c4644a19cf5990b70cc667279db4d9522ffd6947 100644 (file)
--- a/bcr.cc
+++ b/bcr.cc
@@ -50,7 +50,6 @@
 */
 
 static gbfile* fout;
-static char* filename;
 static int curr_rte_num, target_rte_num;
 static double radius;
 static inifile_t* ini;
@@ -191,10 +190,9 @@ bcr_init_radius(void)
 }
 
 static void
-bcr_rd_init(const char* fname)
+bcr_rd_init(const QString& fname)
 {
-  filename = xstrdup(fname);
-  ini = inifile_init(fname, MYNAME);
+  ini = inifile_init(qPrintable(fname), MYNAME);
   if (ini->unicode) {
     cet_convert_init(CET_CHARSET_UTF8, 1);
   }
@@ -205,7 +203,6 @@ static void
 bcr_rd_deinit(void)
 {
   inifile_done(ini);
-  xfree(filename);
 }
 
 /* ------------------------------------------------------------*/
@@ -337,9 +334,8 @@ bcr_data_read(void)
 /* %%% bcr write support %%% ----------------------------------- */
 
 static void
-bcr_wr_init(const char* fname)
+bcr_wr_init(const QString& fname)
 {
-  filename = xstrdup(fname);
   fout = gbfopen(fname, "wb", MYNAME);
   bcr_init_radius();
 }
@@ -348,7 +344,6 @@ static void
 bcr_wr_deinit(void)
 {
   gbfclose(fout);
-  xfree(filename);
 }
 
 static void
index c2eecac1f9fee3dda53f84332a4af4791a9f8159..e31448a1aea67d699c2f97640f471d87ec10d6f7 100644 (file)
@@ -56,13 +56,13 @@ inline state_t operator++(state_t& rs, int)
 
 static const int reqd_bytes[num_states] = { 6, 1, 2, 2, 25, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1 };
 
-static void rd_init(const char* fname)
+static void rd_init(const QString& fname)
 {
-  if (serial_handle = gbser_init(fname), NULL == serial_handle) {
-    fatal(MYNAME ": Can't open port '%s'\n", fname);
+  if (serial_handle = gbser_init(qPrintable(fname)), NULL == serial_handle) {
+    fatal(MYNAME ": Can't open port '%s'\n", qPrintable(fname));
   }
   if (gbser_set_port(serial_handle, 9600, 8, 0, 1) != gbser_OK) {
-    fatal(MYNAME ": Can't configure port '%s'\n", fname);
+    fatal(MYNAME ": Can't configure port '%s'\n", qPrintable(fname));
   }
 }
 
index 8fa844db964be0ef6e5f99a9f281219aa9fe8413..f4cad0b268973fc7f57b18bb3bb18e9b772a4434 100644 (file)
 
 #include "defs.h"
 #include <math.h>
+#include <QtCore/QFileInfo>
 #define MYNAME "Bushnell"
 
 static gbfile* file_in;
-static char* ofname;
+static QString ofname;
 static short_handle mkshort_handle = NULL;
 
 static
@@ -156,7 +157,7 @@ bushnell_get_name_from_symbol(signed int s)
 }
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -168,20 +169,18 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
-  char* dot, *slash;
   static char valid_chars [] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"
                                ".-/\\~@#$%^&*()_+=<>"
                                "abcdefghijklmnopqrstuvwxyz";
 
-  ofname = xstrdup(fname);
-
   // If user provided an extension in the pathname, whack it.
-  dot = strrchr(ofname, '.');
-  slash = strrchr(ofname, GB_PATHSEP);
-  if (dot > slash) {
-    *dot = 0;
+  ofname = fname;
+  int suffix_len = QFileInfo(fname).suffix().length();
+  if (suffix_len > 0) {
+    /* drop the suffix and the period */
+    ofname.chop(suffix_len + 1);
   }
 
   mkshort_handle = mkshort_new_handle();
@@ -193,7 +192,7 @@ static void
 wr_deinit(void)
 {
   mkshort_del_handle(&mkshort_handle);
-  xfree(ofname);
+  ofname.clear();
 }
 
 /*
index 31f6c3d5bbae3f5b5f79b41f93c202e626bb461b..7430e802b38025681b8268e68283cd137645aa89 100644 (file)
@@ -34,7 +34,7 @@ arglist_t bushnell_args[] = {
 };
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   char h[0x14]; // Believed to be zero terminated.
   file_in = gbfopen_le(fname, "rb", MYNAME);
@@ -53,15 +53,17 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
-  int i,l = strlen(fname);
+  int i;
+  int l = fname.length();
   char obuf[20] = { 0 } ;
   char* p = obuf;
   file_out = gbfopen_le(fname, "w", MYNAME);
   trkpt_count = 0;
+  QString fnameu = fname.toUpper();
   for (i = 0; (i < l) && (i < 20); i++) {
-    char c = toupper(fname[i]);
+    char c = fnameu[i].toLatin1();
     if (isalnum(c)) {
       *p++ = c;
     }
index d367aa0fc2d317b3b7cfc0fe512d439f51a3eab0..d7422131e73629112290fb9ef0276d8a843b837d 100644 (file)
@@ -377,7 +377,7 @@ parse_rte_info(const char* buff, route_head* route) /* "R" */
 /* main functions */
 
 static void
-compegps_rd_init(const char* fname)
+compegps_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "rb", MYNAME);
   input_datum = DATUM_WGS84;
@@ -612,7 +612,7 @@ write_waypoints(void)
 /* --------------------------------------------------------------------------- */
 
 static void
-compegps_wr_init(const char* fname)
+compegps_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "w", MYNAME);
   sh = mkshort_new_handle();
diff --git a/cst.cc b/cst.cc
index 04d4b3cc8ba4344e09f1c487e39266617864e2bb..cfb4373aa52e338a9c8a1cc55307ed688e4b340b 100644 (file)
--- a/cst.cc
+++ b/cst.cc
@@ -136,7 +136,7 @@ cst_make_url(char* str)
 /* --------------------------------------------------------------------------- */
 
 static void
-cst_rd_init(const char* fname)
+cst_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "rb", MYNAME);
   temp_route = NULL;
diff --git a/defs.h b/defs.h
index 7c9a39f887593db7995621dffbc0f3625452be5f..df2df9c51ea62e4372fd95cb5c4d689d31cc54ac 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -605,7 +605,7 @@ typedef struct {
 
 extern posn_status tracking_status;
 
-typedef void (*ff_init)(char const*);
+typedef void (*ff_init)(const QString&);
 typedef void (*ff_deinit)(void);
 typedef void (*ff_read)(void);
 typedef void (*ff_write)(void);
@@ -978,7 +978,7 @@ char* convert_human_date_format(const char* human_datef);   /* "MM,YYYY,DD" -> "%m
 char* convert_human_time_format(const char* human_timef);      /* "HH+mm+ss"   -> "%H+%M+%S" */
 char* pretty_deg_format(double lat, double lon, char fmt, const char* sep, int html);    /* decimal ->  dd.dddd or dd mm.mmm or dd mm ss */
 
-const char* get_filename(const char* fname);                   /* extract the filename portion */
+const QString get_filename(const QString& fname);                      /* extract the filename portion */
 
 /*
  * Character encoding transformations.
index 73c23791ecff0eca17cd64972d7b08e4a5c7bdc1..0e0ec2d0549f17725e113e4fbda2c7c9f26c9fbb 100644 (file)
--- a/delbin.cc
+++ b/delbin.cc
@@ -63,7 +63,7 @@ added in the PN-40 2.5 firmware.
 //-----------------------------------------------------------------------------
 // interface to platform-specific device I/O
 typedef struct {
-  void (*init)(const char* name);
+  void (*init)(const QString& name);
   void (*deinit)(void);
   unsigned(*packet_read)(void*);
   unsigned(*packet_write)(const void*, unsigned);
@@ -2298,7 +2298,7 @@ delbin_list_units()
 }
 
 static void
-delbin_rw_init(const char* fname)
+delbin_rw_init(const QString& fname)
 {
   message_t m;
   char buf[256];
@@ -2350,8 +2350,8 @@ delbin_rw_init(const char* fname)
   }
   message_free(&m);
 
-  if (strlen(fname) > 4) {
-    if (0 == strcmp(fname+4, "list")) {
+  if (fname.length() > 4) {
+    if (fname.mid(4,4) == "list") {
       delbin_list_units();
       exit(1);
     }
@@ -2465,7 +2465,7 @@ ff_vecs_t delbin_vecs = {
 static HANDLE hid_handle;
 
 static void
-win_os_init(const char* fname)
+win_os_init(const QString& fname)
 {
   GUID hid_guid;
   HDEVINFO dev_info;
@@ -2630,7 +2630,7 @@ interrupt_report_cb(void* target, IOReturn result, void* refcon, void* sender, U
 }
 
 static void
-mac_os_init(const char* fname)
+mac_os_init(const QString& fname)
 {
   CFMutableDictionaryRef dict = IOServiceMatching(kIOHIDDeviceKey);
   io_service_t service;
@@ -2749,7 +2749,7 @@ static int endpoint_in;
 static int endpoint_out;
 
 static void
-libusb_os_init(const char* fname)
+libusb_os_init(const QString& fname)
 {
   struct usb_bus* bus;
   const struct usb_endpoint_descriptor* endpoint_desc;
@@ -2861,7 +2861,7 @@ static int fd_hiddev;
 static int linuxhid_os_init_status;
 
 static void
-linuxhid_os_init(const char* fname)
+linuxhid_os_init(const QString& fname)
 {
   struct hidraw_devinfo info;
   struct hiddev_field_info finfo;
@@ -2869,8 +2869,8 @@ linuxhid_os_init(const char* fname)
   struct dirent* d;
 
   fd_hidraw = fd_hiddev = -1;
-  if (fname && memcmp(fname, "hid:", 4) == 0) {
-    char* raw_name = xstrdup(fname + 4);
+  if (fname.startsWith("hid:")) {
+    char* raw_name = xstrdup(qPrintable(fname.mid(4)));
     char* dev_name = strchr(raw_name, ',');
     if (dev_name == NULL) {
       fatal(MYNAME ": missing hiddev path\n");
@@ -2997,7 +2997,7 @@ static const delbin_os_ops_t linuxhid_os_ops = {
 };
 
 static void
-linux_os_init(const char* fname)
+linux_os_init(const QString& fname)
 {
   // tell linuxhid_os_init not to exit
   linuxhid_os_init_status = 1;
@@ -3030,7 +3030,7 @@ delbin_os_ops_t delbin_os_ops = {
 // stubs
 #if !(HAVE_WDK || __APPLE__ || HAVE_LIBUSB || HAVE_LINUX_HID)
 static void
-stub_os_init(const char* fname)
+stub_os_init(const QString& fname)
 {
   fatal(MYNAME ": OS not supported\n");
 }
index bb9a29d698c79c8680539402d03c7af83fe91e45..4607691e19033266d27cb1d7d94e34f0073997df 100644 (file)
--- a/delgpl.cc
+++ b/delgpl.cc
@@ -39,7 +39,7 @@ static gbfile* gplfile_in;
 static gbfile* gplfile_out;
 
 static void
-gpl_rd_init(const char* fname)
+gpl_rd_init(const QString& fname)
 {
   gplfile_in = gbfopen_le(fname, "rb", MYNAME);
   if (sizeof(struct gpl_point) != 56) {
@@ -107,7 +107,7 @@ gpl_rd_deinit(void)
 }
 
 static void
-gpl_wr_init(const char* fname)
+gpl_wr_init(const QString& fname)
 {
   gplfile_out = gbfopen_le(fname, "wb", MYNAME);
 }
index 3a8fd5e4e389a3e5627f5b6f1812b1e6e4e25318..07c6b2f56e5a1f41a2782930edc338efc64391a1 100644 (file)
@@ -481,7 +481,7 @@ destinator_rtept_disp(const Waypoint* wpt)
 *******************************************************************************/
 
 static void
-destinator_rd_init(const char* fname)
+destinator_rd_init(const QString& fname)
 {
   fin = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -514,7 +514,7 @@ destinator_read_trk_wrapper(void)
 }
 
 static void
-destinator_wr_init(const char* fname)
+destinator_wr_init(const QString& fname)
 {
   fout = gbfopen_le(fname, "wb", MYNAME);
 }
index 9f519a5edc5e95513a2d4dd63b7801252c69e19f..238ffaf4e720ba71a3b9f716636c1cffbcf09ed2 100644 (file)
--- a/dg-100.cc
+++ b/dg-100.cc
@@ -710,13 +710,13 @@ arglist_t dg100_args[] = {
 *******************************************************************************/
 
 static void
-common_rd_init(const char* fname)
+common_rd_init(const QString& fname)
 {
-  if (serial_handle = gbser_init(fname), NULL == serial_handle) {
-    fatal(MYNAME ": Can't open port '%s'\n", fname);
+  if (serial_handle = gbser_init(qPrintable(fname)), NULL == serial_handle) {
+    fatal(MYNAME ": Can't open port '%s'\n", qPrintable(fname));
   }
   if (gbser_set_speed(serial_handle, model->speed) != gbser_OK) {
-    fatal(MYNAME ": Can't configure port '%s'\n", fname);
+    fatal(MYNAME ": Can't configure port '%s'\n", qPrintable(fname));
   }
   // Toss anything that came in before our speed was set, particularly
   // for the bluetooth BT-335 product.
@@ -724,7 +724,7 @@ common_rd_init(const char* fname)
 }
 
 static void
-dg100_rd_init(const char* fname)
+dg100_rd_init(const QString& fname)
 {
   static const model_t dg100_model = { "DG-100", 115200, 1, 1, dg100_commands, sizeof(dg100_commands) / sizeof(struct dg100_command) };
   model = &dg100_model;
@@ -732,7 +732,7 @@ dg100_rd_init(const char* fname)
 }
 
 static void
-dg200_rd_init(const char* fname)
+dg200_rd_init(const QString& fname)
 {
   static const model_t dg200_model = { "DG-200", 230400, 0, 0, dg200_commands, sizeof(dg200_commands) / sizeof(struct dg100_command) };
   model = &dg200_model;
index 00d3de903871426926523bf28a34c24708e511ac..f535a5a11d0119eeb9b5637d0c15efd8caffeb4d 100644 (file)
--- a/dmtlog.cc
+++ b/dmtlog.cc
@@ -672,7 +672,7 @@ read_XML(void)
 *******************************************************************************/
 
 static void
-dmtlog_rd_init(const char* fname)
+dmtlog_rd_init(const QString& fname)
 {
   fin = gbfopen_le(fname, "rb", MYNAME);
 
@@ -718,7 +718,7 @@ dmtlog_read(void)
 }
 
 static void
-dmtlog_wr_init(const char* fname)
+dmtlog_wr_init(const QString& fname)
 {
   fout = gbfopen_le(fname, "wb", MYNAME);
 }
index 79f1c7ed57a5813dbd17ede4923e6e101cfbf8be..6b641024d451eb72bc2897a0cbf6fd4304f842c2 100644 (file)
@@ -37,7 +37,7 @@ arglist_t easygps_args[] = {
 };
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   int sz;
   char ibuf[100] = {'0'} ;
@@ -50,7 +50,7 @@ rd_init(const char* fname)
   if ((sz < 52) ||
       strncmp(ibuf, ezsig, sizeof(ezsig)-1) ||
       (ibuf[51] != 'W')) {
-    fatal(MYNAME ": %s is not an EasyGPS file.\n", fname);
+    fatal(MYNAME ": %s is not an EasyGPS file.\n", qPrintable(fname));
   }
 }
 
@@ -61,7 +61,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen_le(fname, "wb", MYNAME);
   mkshort_handle = mkshort_new_handle();
index 99bca0ee6101ecfd1fce7ab73d88e227454aba52..b2c53eaf352557f5a7154c4d16e806f5f754e45b 100644 (file)
@@ -206,7 +206,7 @@ read_lap(void)
 //*******************************************************************************
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   if (global_opts.debug_level > 1) {
     printf (MYNAME " rd_deinit()\n");
index 1be9e389bf1b8c8dde42d99a48bc9357b4bb869f..8799a47b4e90e8e2389a07cc5305843aaced28b1 100644 (file)
--- a/enigma.cc
+++ b/enigma.cc
@@ -76,7 +76,7 @@ typedef struct enigma_wpt {
 static gbfile* file_in, *file_out;
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -154,7 +154,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen_le(fname, "wb", MYNAME);
 }
diff --git a/exif.cc b/exif.cc
index 0e66d33f7565dc15672cda95c9af09604ec56297..d8604c472a323ab43d8468dedd833ef8cbba1dc0 100644 (file)
--- a/exif.cc
+++ b/exif.cc
@@ -34,6 +34,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
+#include <QtCore/QFile>
 
 #define MYNAME "exif"
 
@@ -135,7 +136,7 @@ static exif_app_t* exif_app;
 const Waypoint* exif_wpt_ref;
 time_t exif_time_ref;
 static char exif_success;
-static char* exif_fout_name;
+static QString exif_fout_name;
 
 static char* opt_filename, *opt_overwrite, *opt_frame, *opt_name;
 
@@ -1340,7 +1341,7 @@ exif_write_apps(void)
 *******************************************************************************/
 
 static void
-exif_rd_init(const char* fname)
+exif_rd_init(const QString& fname)
 {
   fin = gbfopen_be(fname, "rb", MYNAME);
   QUEUE_INIT(&exif_apps);
@@ -1373,12 +1374,12 @@ exif_read(void)
 }
 
 static void
-exif_wr_init(const char* fname)
+exif_wr_init(const QString& fname)
 {
   uint16_t soi;
 
   exif_success = 0;
-  exif_fout_name = xstrdup(fname);
+  exif_fout_name = fname;
 
   QUEUE_INIT(&exif_apps);
 
@@ -1405,23 +1406,21 @@ exif_wr_init(const char* fname)
 static void
 exif_wr_deinit(void)
 {
-  char* tmpname;
 
   exif_release_apps();
-  tmpname = xstrdup(fout->name);
+  QString tmpname = QString::fromLocal8Bit(fout->name);
   gbfclose(fout);
 
   if (exif_success) {
     if (*opt_overwrite == '1') {
-      remove(exif_fout_name);
-      rename(tmpname, exif_fout_name);
+      QFile::remove(exif_fout_name);
+      QFile::rename(tmpname, exif_fout_name);
     }
   } else {
-    remove(tmpname);
+    QFile::remove(tmpname);
   }
 
-  xfree(exif_fout_name);
-  xfree(tmpname);
+  exif_fout_name.clear();
 }
 
 static void
index 08f7b00e58976dd8b1a871d2cbf668cc5069485d..134347fc05a8d51240b5ca4bdcb193c8c501aefb 100644 (file)
@@ -51,7 +51,7 @@ arglist_t f90g_track_args[] = {
 *******************************************************************************/
 #define VALIDHEADER "MEDIA 1."
 static void
-f90g_track_rd_init(const char* fname)
+f90g_track_rd_init(const QString& fname)
 {
   char header[HEADERRECORDSIZE];
 
@@ -70,7 +70,7 @@ f90g_track_rd_init(const char* fname)
     // start the track list
     track = route_head_alloc();
     is_fatal((track == NULL), MYNAME ": memory non-enough");
-    track->rte_name = QString::fromLatin1(fname);
+    track->rte_name = fname;
     track_add_head(track);
   }
 }
index db6de36dd1d06a3220c4a00b5366d3beaccbd3fb..1e0997b4f8a635b64a688c8f47ed57f2465ec489 100644 (file)
@@ -389,7 +389,7 @@ parse_categories(char* buff)
 /* main functions */
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "rb", MYNAME);
 
index 3373311018e05df524c39928cad6013d19580b84..87cf51f76002ee471f2c40f55399c65a4f964ffe 100644 (file)
--- a/garmin.cc
+++ b/garmin.cc
@@ -110,7 +110,7 @@ static int d103_icon_number_from_symbol(const QString& s);
 
 
 static void
-rw_init(const char* fname)
+rw_init(const QString& fname)
 {
   int receiver_short_length;
   int receiver_must_upper = 1;
@@ -130,7 +130,7 @@ rw_init(const char* fname)
   GPS_Enable_Error();
 
   if (poweroff) {
-    GPS_Command_Off(fname);
+    GPS_Command_Off(qPrintable(fname));
     return;
   }
 
@@ -140,7 +140,7 @@ rw_init(const char* fname)
    * an affected unit.
    */
   if (resettime) {
-    GPS_Command_Send_Time(fname, current_time().toTime_t());
+    GPS_Command_Send_Time(qPrintable(fname), current_time().toTime_t());
     return;
   }
 
@@ -162,10 +162,10 @@ rw_init(const char* fname)
     }
   }
 
-  if (GPS_Init(fname) < 0) {
-    fatal(MYNAME ":Can't init %s\n", fname);
+  if (GPS_Init(qPrintable(fname)) < 0) {
+    fatal(MYNAME ":Can't init %s\n", qPrintable(fname));
   }
-  portname = fname;
+  portname = xstrdup(qPrintable(fname));
 
   if (baud && baud != DEFAULT_BAUD) {
     if (0 == GPS_Set_Baud_Rate(portname, baud)) {
@@ -327,7 +327,7 @@ rw_init(const char* fname)
 }
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   if (setjmp(gdx_jmp_buf)) {
     const char* vec_opts = NULL;
@@ -352,6 +352,9 @@ rw_deinit(void)
   if (mkshort_handle) {
     mkshort_del_handle(&mkshort_handle);
   }
+
+  xfree(portname);
+  portname = NULL;
 }
 
 static int
@@ -774,10 +777,10 @@ pvt2wpt(GPS_PPvt_Data pvt, Waypoint* wpt)
 static gpsdevh* pvt_fd;
 
 static void
-pvt_init(const char* fname)
+pvt_init(const QString& fname)
 {
   rw_init(fname);
-  GPS_Command_Pvt_On(fname, &pvt_fd);
+  GPS_Command_Pvt_On(qPrintable(fname), &pvt_fd);
 }
 
 static Waypoint*
index b1614b30f230147661d1196a71bde07757026a54..c7cf88565d748bd281ff305304f50b0b52d34eea 100644 (file)
@@ -59,7 +59,7 @@ static        gbfile* fin;
 *******************************************************************************/
 
 static void
-fit_rd_init(const char* fname)
+fit_rd_init(const QString& fname)
 {
   fin = gbfopen_le(fname, "rb", MYNAME);
 }
index cae6f1d42ef8d295d6013db559fcf1338a80635d..98093dc7958f15141c659a148b48e699121088f9 100644 (file)
@@ -1433,7 +1433,7 @@ load_bitmap_from_file(const char* fname, unsigned char** data, int* data_sz)
 *******************************************************************************/
 
 static void
-garmin_gpi_rd_init(const char* fname)
+garmin_gpi_rd_init(const QString& fname)
 {
   fin = gbfopen_le(fname, "rb", MYNAME);
   rdata = new reader_data_t;
@@ -1455,7 +1455,7 @@ garmin_gpi_rd_init(const char* fname)
 
 
 static void
-garmin_gpi_wr_init(const char* fname)
+garmin_gpi_wr_init(const QString& fname)
 {
   int i;
 
index 182c88a61552ed3a7cc341e4ad58c9f4b4093c75..015c7c2c50604b1dcd60d38bce7cf6eb281f7f9a 100644 (file)
@@ -753,7 +753,7 @@ track_disp_wpt_cb(const Waypoint* wpt)
 *******************************************************************************/
 
 static void
-garmin_txt_wr_init(const char* fname)
+garmin_txt_wr_init(const QString& fname)
 {
   const char* grid_str;
 
@@ -1343,7 +1343,7 @@ parse_track_waypoint(void)
 /***************************************************************/
 
 static void
-garmin_txt_rd_init(const char* fname)
+garmin_txt_rd_init(const QString& fname)
 {
   memset(&gtxt_flags, 0, sizeof(gtxt_flags));
 
index 6d98d59b956a3c457c4ec20a075d051ca0662db8..b91e98e2e7d6d22e83ce4a1d9056e7b948d4f8cc 100644 (file)
@@ -72,7 +72,7 @@ arglist_t format_garmin_xt_args[] = {
  * %%%        Reader callbacks                                              %%% *
  *******************************************************************************/
 static void
-format_garmin_xt_rd_init(const char* fname)
+format_garmin_xt_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "rb", MYNAME);
 }
index 13f7019dbd88235ea5bb24b5e66cfd4f28f53446..193494391f0308f19eeaccb71d0f5e5d73eec479 100644 (file)
--- a/gbfile.cc
+++ b/gbfile.cc
@@ -538,7 +538,8 @@ gbfopen(const QString filename, const char* mode, const char* module)
     file->fileungetc = memapi_ungetc;
     file->filewrite = memapi_write;
   } else {
-    file->name = xstrdup(filename);
+    /* Be careful to convert back to local8Bit for these c based APIS */
+    file->name = xstrdup(qPrintable(filename));
     file->is_pipe = (filename == "-");
 
     /* Do we have a '.gz' extension in the filename ? */
diff --git a/gdb.cc b/gdb.cc
index ce463eb841a16696e83bd3be93ee95634cde0958..fb25c35e234f13fd24171439c8440af95092fcc6 100644 (file)
--- a/gdb.cc
+++ b/gdb.cc
@@ -1004,7 +1004,7 @@ read_track(void)
 /*******************************************************************************/
 
 static void
-gdb_rd_init(const char* fname)
+gdb_rd_init(const QString& fname)
 {
   fin = gbfopen_le(fname, "rb", MYNAME);
   ftmp = gbfopen_le(NULL, "wb", MYNAME);
@@ -1773,7 +1773,7 @@ write_track_cb(const route_head* trk)
 /*-----------------------------------------------------------------------------*/
 
 static void
-gdb_wr_init(const char* fname)
+gdb_wr_init(const QString& fname)
 {
   fout = gbfopen_le(fname, "wb", MYNAME);
   ftmp = gbfopen_le(NULL, "wb", MYNAME);
diff --git a/geo.cc b/geo.cc
index 192be2092375eeac94bea63423b7db16c8329e93..5c785f3814c4a6ad89f7a3053280c5fd43eb6db2 100644 (file)
--- a/geo.cc
+++ b/geo.cc
@@ -95,7 +95,7 @@ void GeoReadLoc()
 }
 
 static void
-geo_rd_init(const char* fname)
+geo_rd_init(const QString& fname)
 {
   geo_read_fname = fname;
 }
@@ -157,7 +157,7 @@ geo_rd_deinit(void)
 }
 
 static void
-geo_wr_init(const char* fname)
+geo_wr_init(const QString& fname)
 {
   ofd = gbfopen(fname, "w", MYNAME);
 
index 36f9ef8f1edc760832902c5a2d7b00d7ca7876ee..9a616cfe573f1f434333e34619348e027e068838 100644 (file)
@@ -481,14 +481,15 @@ ggv_bin_read_file(QDataStream& stream)
 }
 
 static void
-ggv_bin_read_init(const char* fname)
+ggv_bin_read_init(const QString& fname)
 {
-  read_fname = QString::fromUtf8(fname);
+  read_fname = fname;
 }
 
 static void
 ggv_bin_read_deinit(void)
 {
+  read_fname.clear();
 }
 
 static void
@@ -497,7 +498,7 @@ ggv_bin_read(void)
   QFile file(read_fname);
 
   if (!file.open(QIODevice::ReadOnly)) {
-    fatal(MYNAME ": Error opening file %s\n", read_fname.toStdString().c_str());
+    fatal(MYNAME ": Error opening file %s\n", qPrintable(read_fname));
   }
 
   QDataStream stream(&file);
index 0db3867fe9d9222857fa6b176891ddc7f5e0120d..c026bee547dac288c14d5476f02981453bbad3f2 100644 (file)
@@ -44,7 +44,7 @@ arglist_t ggv_log_args[] = {
 *******************************************************************************/
 
 static void
-ggv_log_rd_init(const char* fname)
+ggv_log_rd_init(const QString& fname)
 {
   static char magic[32];
   int len = 0;
@@ -190,7 +190,7 @@ ggv_log_read(void)
 }
 
 static void
-ggv_log_wr_init(const char* fname)
+ggv_log_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "wb", MYNAME);
 
index 36171c445be923c6791729bf9dde044a9d7d457f..ae7c22bf60d3453a3df9eaaebd70c4edce5b92b6 100644 (file)
@@ -80,9 +80,9 @@ static OVL_COLOR_TYP color;
 *******************************************************************************/
 
 static void
-ggv_ovl_rd_init(const char* fname)
+ggv_ovl_rd_init(const QString& fname)
 {
-  inifile = inifile_init(fname, MYNAME);
+  inifile = inifile_init(qPrintable(fname), MYNAME);
   if (inifile->unicode) {
     cet_convert_init(CET_CHARSET_UTF8, 1);
   }
@@ -214,7 +214,7 @@ static int get_direction(const Waypoint* A, const Waypoint* B);
 /* -----------------------------------------------------------------------*/
 
 static void
-ggv_ovl_wr_init(const char* fname)
+ggv_ovl_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "w", MYNAME);
 
index 81d0b54f5d04e593aefffb3056c4c4378e135d75..43cd8b2d16ecf98842722434de815832cdcfd5c6 100644 (file)
@@ -406,7 +406,7 @@ globalsat_probe_device()
 }
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   if (global_opts.debug_level > 1) {
     printf(MYNAME " rd_init()\n");
@@ -422,23 +422,23 @@ rd_init(const char* fname)
     }
   }
   if (!opt_input_dump_file) {
-    serial_init(fname);
+    serial_init(qPrintable(fname));
   } else {
     // read from dump-file instead of serial
     in_file = gbfopen(fname, "r", MYNAME);
-    is_fatal(!in_file, "Could not open dumpfile for input: %s", fname);
+    is_fatal(!in_file, "Could not open dumpfile for input: %s", qPrintable(fname));
 
   }
   globalsat_probe_device();
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   if (global_opts.debug_level > 1) {
     printf(MYNAME " wr_init()\n");
   }
-  serial_init(fname);
+  serial_init(qPrintable(fname));
 }
 
 
index 8568c0d97cbac2e01257e41499110ae5f47fcbd3..2ab3de4781cb28b171af6dca4e884dae2da5a50f 100644 (file)
@@ -61,7 +61,7 @@ static xg_tag_mapping gl_map[] = {
 };
 
 static void
-glogbook_rd_init(const char* fname)
+glogbook_rd_init(const QString& fname)
 {
   xml_init(fname, gl_map, NULL);
 }
@@ -79,7 +79,7 @@ glogbook_rd_deinit(void)
 }
 
 static void
-glogbook_wr_init(const char* fname)
+glogbook_wr_init(const QString& fname)
 {
   ofd = gbfopen(fname, "w", MYNAME);
   writer.setAutoFormatting(true);
index 663ae3379cb9b2ec722908a6545b7773b17e5349..efbdc2fd795b96ff1593a4961d088cec6b401f90 100644 (file)
@@ -43,13 +43,13 @@ static gbfile* fin, *fout;
 *******************************************************************************/
 
 static void
-gnav_trl_rd_init(const char* fname)
+gnav_trl_rd_init(const QString& fname)
 {
   fin = gbfopen_le(fname, "rb", MYNAME);
 }
 
 static void
-gnav_trl_rw_init(const char* fname)
+gnav_trl_rw_init(const QString& fname)
 {
   fout = gbfopen_le(fname, "wb", MYNAME);
 }
index 86bdfc44c2757980e6338f58752ae6569b00651d..1f8a9b555ab0627d9a3f33ae603880b02554e448 100644 (file)
--- a/google.cc
+++ b/google.cc
@@ -30,7 +30,7 @@ static QString script;
 static route_head** routehead;
 static int* routecount;
 static short_handle desc_handle;
-static const char* rd_fname;
+static QString rd_fname;
 
 static int serial = 0;
 
@@ -231,7 +231,7 @@ void goog_poly_e(xg_string args, const QXmlStreamAttributes*)
 }
 
 static void
-google_rd_init(const char* fname)
+google_rd_init(const QString& fname)
 {
   rd_fname = fname;
 
@@ -244,7 +244,7 @@ google_rd_init(const char* fname)
 static void
 goog_read_file(void)
 {
-  QFile src(QString::fromUtf8(rd_fname));
+  QFile src(rd_fname);
 
   src.open(QIODevice::ReadOnly);
 
@@ -538,6 +538,7 @@ google_rd_deinit(void)
 {
   xml_deinit();
   mkshort_del_handle(&desc_handle);
+  rd_fname.clear();
 }
 
 ff_vecs_t google_vecs = {
index 6ed31e102ce816d91c5f4672649d1c5b655a208d..3058958c4ea690f06571ce7d100bec1ab526fb8d 100644 (file)
@@ -130,7 +130,7 @@ goog_poly_e(xg_string args, const QXmlStreamAttributes*)
 }
 
 static void
-google_rd_init(const char* fname)
+google_rd_init(const QString& fname)
 {
   desc_handle = mkshort_new_handle();
   setshort_length(desc_handle, 12);
index dcda8f7a29ae9931108adf1250eb15ff0930db94..95ee92bbd7d674cfccc6c40644b49e7d8694009e 100644 (file)
--- a/gopal.cc
+++ b/gopal.cc
@@ -100,11 +100,9 @@ int gopal_check_line(char* line)
 *******************************************************************************/
 
 static void
-gopal_rd_init(const char* fname)
+gopal_rd_init(const QString& fname)
 {
-  char buff[32];
   char* ck;
-  const char* filename;
   CHECK_BOOL(optclean);
   if (optminspeed) {
     minspeed=atof(optminspeed);
@@ -128,7 +126,6 @@ gopal_rd_init(const char* fname)
 
   fin = gbfopen(fname, "r", MYNAME);
 
-  memset(buff,0,sizeof(buff));
   if (optdate) {
     memset(&opt_tm, 0, sizeof(opt_tm));
 
@@ -142,15 +139,16 @@ gopal_rd_init(const char* fname)
 
   } else {
     /* remove path */
-    filename = get_filename(fname);
+    QString filename = get_filename(fname);
+       QString datestr;
 
-    if ((strncmp(filename,"track",5)==0)&&(strlen(filename)>13)) { // we need at least 13 letters: trackYYYYMMDD...
-      strncpy(&buff[0],&filename[5],8);
-    } else if ((strncmp(filename,"A_",2)==0)&&(strlen(filename)>10)) { // here we expect at least 10 letters: A_YYYYMMDD...
-      strncpy(&buff[0],&filename[2],8);
+    if (filename.startsWith("track")&&(filename.length()>13)) { // we need at least 13 letters: trackYYYYMMDD...
+      datestr = filename.mid(5,8);
+    } else if (filename.startsWith("A_")&&(filename.length()>10)) { // here we expect at least 10 letters: A_YYYYMMDD...
+      datestr = filename.mid(2,8);
     }
     // in buff we should now have something wich looks like a valid date starting with YYYYMMDD
-    /*ck = (char*)*/strptime(buff, "%Y%m%d", &filenamedate);
+    /*ck = (char*)*/strptime(qPrintable(datestr), "%Y%m%d", &filenamedate);
     // if (((ck == NULL) || (*ck != '\0') )&&!(optdate))
     // fatal(MYNAME ": Invalid date in filename \"%s\", try to set manually using \"date\" switch!\n", buff);
     // /* else */ if (filenamedate.tm_year < 70)
@@ -377,7 +375,7 @@ gopal_write_waypt(const Waypoint* wpt)
 
 
 static void
-gopal_wr_init(const char* fname)
+gopal_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "w", MYNAME);
 }
index 6b9300a148a36afcc7ced04c1d52694e76d561ac..ef3b64e9d74189ea8232507318aca5ad1567891b 100644 (file)
--- a/gpssim.cc
+++ b/gpssim.cc
@@ -31,7 +31,7 @@ static gbfile* fout;
 static char* wayptspd;
 static char* splitfiles_opt;
 static int splitfiles;
-static char* fnamestr;
+static QString fnamestr;
 static int trk_count;
 static int doing_tracks;
 
@@ -56,9 +56,9 @@ arglist_t gpssim_args[] = {
  */
 
 static void
-gpssim_wr_init(const char* fname)
+gpssim_wr_init(const QString& fname)
 {
-  fnamestr =  xstrdup(fname);
+  fnamestr =  fname;
   trk_count = 0;
   splitfiles = splitfiles_opt ? atoi(splitfiles_opt) : 0;
 
@@ -80,7 +80,7 @@ gpssim_wr_deinit(void)
     fout = NULL;
   }
 
-  xfree(fnamestr);
+  fnamestr.clear();
 }
 
 
@@ -144,19 +144,13 @@ static void
 gpssim_trk_hdr(const route_head* rh)
 {
   if (splitfiles) {
-    char c[1024];
-    char* ofname = xstrdup(fnamestr);
 
     if (fout) {
       fatal(MYNAME ": output file already open.\n");
     }
 
-    snprintf(c, sizeof(c), "%s%04d.gpssim",
-             doing_tracks ? "-track" : "-route",
-             trk_count++);
-    ofname = xstrappend(ofname, c);
+    QString ofname = QString("%1%2%3.gpssim").arg(fnamestr).arg(doing_tracks ? "-track" : "-route").arg(trk_count++, 4, 10, QChar('0'));
     fout = gbfopen(ofname, "wb", MYNAME);
-    xfree(ofname);
   }
   track_recompute(rh, NULL);
 }
@@ -175,10 +169,8 @@ gpssim_write(void)
 {
   if (waypt_count()) {
     if (splitfiles) {
-      char* ofname = xstrdup(fnamestr);
-      ofname = xstrappend(ofname, "-waypoints.gpssim");
+      QString ofname = fnamestr + "-waypoints.gpssim";
       fout = gbfopen(ofname, "wb", MYNAME);
-      xfree(ofname);
     }
     if (wayptspd && wayptspd[0]) {
       gpssim_write_spd(atof(wayptspd));
index 8dadf170ec64b9357b3234f511e46cb44d91878f..a43609d2c044aa27292e57c527b438d72b17351d 100644 (file)
@@ -33,7 +33,7 @@ static short_handle mkshort_handle;
 #define MYNAME "GPSUTIL"
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen(fname, "rb", MYNAME);
 }
@@ -45,7 +45,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen(fname, "w", MYNAME);
   mkshort_handle = mkshort_new_handle();
diff --git a/gpx.cc b/gpx.cc
index 67e10158d436f0a909585ce876ece9e8fbc34dca..3b3b963c33e9e52e7d68408b32ff02c14cdcba9c 100644 (file)
--- a/gpx.cc
+++ b/gpx.cc
@@ -1188,7 +1188,7 @@ gpx_cdata(const QString& s)
 }
 
 static void
-gpx_rd_init(const char* fname)
+gpx_rd_init(const QString& fname)
 {
   iqfile = new gpsbabel::File(fname);
   iqfile->open(QIODevice::ReadOnly);
@@ -1228,7 +1228,7 @@ gpx_rd_deinit(void)
 }
 
 static void
-gpx_wr_init(const char* fname)
+gpx_wr_init(const QString& fname)
 {
   mkshort_handle = NULL;
   oqfile = new gpsbabel::File(fname);
diff --git a/gtm.cc b/gtm.cc
index 5b4bf52dc30c1ceb79723088ae4ade46dce9c9f6..99ae66e5ed2757f02c16a6d04803a395a93cbb37 100644 (file)
--- a/gtm.cc
+++ b/gtm.cc
@@ -392,7 +392,7 @@ void convert_datum(double* lat, double* lon)
 /* Callbacks */
 
 static void
-gtm_rd_init(const char* fname)
+gtm_rd_init(const QString& fname)
 {
   int version;
   file_in = gbfopen_le(fname, "rb", MYNAME);
@@ -446,7 +446,7 @@ static void count_track_waypts(const Waypoint* wpt)
 }
 
 static void
-gtm_wr_init(const char* fname)
+gtm_wr_init(const QString& fname)
 {
   rt_count = tr_count = 0;
   track_disp_all(NULL, NULL, count_track_waypts);
index 4ee09e229264ccff97a7c85b16cfc89bc9591746..14eb0d700e978a87553e0f0ef7855dd024945763 100644 (file)
@@ -170,7 +170,7 @@ gtc_tags_to_ignore[] = {
 };
 
 static void
-gtc_rd_init(const char* fname)
+gtc_rd_init(const QString& fname)
 {
   xml_init(fname, gtc_map, NULL);
   xml_ignore_tags(gtc_tags_to_ignore);
@@ -189,7 +189,7 @@ gtc_rd_deinit(void)
 }
 
 static void
-gtc_wr_init(const char* fname)
+gtc_wr_init(const QString& fname)
 {
   int i;
 
index d710f6f8891181cbb780be871854dc3fbc9d1801..1b37486614058683eabbdff9585b8d6cb4cc1470 100644 (file)
@@ -79,7 +79,7 @@ static xg_tag_mapping ht_map[] = {
 };
 
 static void
-hiketech_rd_init(const char* fname)
+hiketech_rd_init(const QString& fname)
 {
   xml_init(fname, ht_map, NULL);
 }
@@ -97,7 +97,7 @@ hiketech_rd_deinit(void)
 }
 
 static void
-hiketech_wr_init(const char* fname)
+hiketech_wr_init(const QString& fname)
 {
   ofd = gbfopen(fname, "w", MYNAME);
 
index 8f2aa80a80364544715c4c51b92350dc7a8aada6..42252520be504971320dbde28ab9846c5b474a90 100644 (file)
--- a/holux.cc
+++ b/holux.cc
@@ -38,7 +38,7 @@ static  short_handle mkshort_handle;
 #define MYNAME "Holux"
 
 
-static void rd_init(const char* fname)
+static void rd_init(const QString& fname)
 {
   file_in = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -54,7 +54,7 @@ static void rd_deinit(void)
 
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   mkshort_handle = mkshort_new_handle();
 
diff --git a/html.cc b/html.cc
index 91b52a663b2f6696df337a0ab1248a956f6af839..dd24447a9277b908428a8eda2b72160242760e79 100644 (file)
--- a/html.cc
+++ b/html.cc
@@ -65,7 +65,7 @@ arglist_t html_args[] = {
 
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen(fname, "w", MYNAME);
   mkshort_handle = mkshort_new_handle();
index 3d70ebcfd70df103c8a313a79be421f26d079540..7159aa0e894ab6bb943fe7ab255e480af06bf79b 100644 (file)
@@ -250,7 +250,7 @@ inverse_gudermannian_i1924(const double x)
 *******************************************************************************/
 
 static void
-humminbird_rd_init(const char* fname)
+humminbird_rd_init(const QString& fname)
 {
   fin = gbfopen_be(fname, "rb", MYNAME);
 }
@@ -642,7 +642,7 @@ humminbird_read(void)
 /************************************************************************************************/
 
 static void
-humminbird_wr_init(const char* fname)
+humminbird_wr_init(const QString& fname)
 {
   fout = gbfopen_be(fname, "wb", MYNAME);
 
diff --git a/igc.cc b/igc.cc
index 1ad76f2e0a214a2c0a2c77f522b4fc952f1a702d..449a751178d285d79be5b2dc9493aed1d2fc7a79 100644 (file)
--- a/igc.cc
+++ b/igc.cc
@@ -119,7 +119,7 @@ retry:
   return (igc_rec_type_t) c[0];
 }
 
-static void rd_init(const char* fname)
+static void rd_init(const QString& fname)
 {
   char* ibuf;
 
@@ -127,7 +127,7 @@ static void rd_init(const char* fname)
   lineno = 0;
   // File must begin with a manufacturer/ID record
   if (get_record(&ibuf) != rec_manuf_id || sscanf(ibuf, "A%3[A-Z]", manufacturer) != 1) {
-    fatal(MYNAME ": %s is not an IGC file\n", fname);
+    fatal(MYNAME ": %s is not an IGC file\n", qPrintable(fname));
   }
 }
 
@@ -911,7 +911,7 @@ static void wr_track(void)
   }
 }
 
-static void wr_init(const char* fname)
+static void wr_init(const QString& fname)
 {
   file_out = gbfopen(fname, "wb", MYNAME);
 }
index d134fb642e0fd8234c9ff99a7910d7f910cc148f..79e44067adba6073dea710828fc48ebaf54c353e 100644 (file)
@@ -140,7 +140,7 @@ ignr_etape_alt(xg_string args, const QXmlStreamAttributes* attrv)
 /* callbacks registered in ignr_vecs */
 
 static void
-ignr_rd_init(const char* fname)
+ignr_rd_init(const QString& fname)
 {
   xml_init(fname, ignr_xml_map, NULL);
   wpt = NULL;
@@ -164,7 +164,7 @@ ignr_read(void)
 /* callbacks registered in ignr_vecs */
 
 static void
-ignr_rw_init(const char* fname)
+ignr_rw_init(const QString& fname)
 {
   fout = gbfopen(fname, "w", MYNAME);
 }
diff --git a/igo8.cc b/igo8.cc
index bbc919327850f4f6b86fa7d7c6d984a56b00cd9f..85937e2eb729ebc665e15a9444de9ff45140dbb0 100644 (file)
--- a/igo8.cc
+++ b/igo8.cc
@@ -132,7 +132,7 @@ static void igo8_check_type_sizes()
 }
 
 // Reader initialization callback
-static void igo8_read_init(const char* fname)
+static void igo8_read_init(const QString& fname)
 {
   igo8_file_in = gbfopen_le(fname, "rb", MYNAME);
 
@@ -177,7 +177,7 @@ static void igo8_read_deinit(void)
 }
 
 // Writer initialize callback
-static void igo8_write_init(const char* fname)
+static void igo8_write_init(const QString& fname)
 {
   igo8_file_out = gbfopen_le(fname, "wb", MYNAME);
 
diff --git a/ik3d.cc b/ik3d.cc
index fd853ef721329cdce40e1a1ef42b718cd8c7f0f3..37042437dc4c45382de9e416bd81ccfd6c79b3be 100644 (file)
--- a/ik3d.cc
+++ b/ik3d.cc
@@ -120,7 +120,7 @@ iktobj_type(xg_string args, const QXmlStreamAttributes*)
 }
 
 static void
-ikt_rd_init(const char* fname)
+ikt_rd_init(const QString& fname)
 {
   xml_init(fname, ikt_map, NULL);
 
index 959931f7d9edca9bcef51cc1f367b8037d2cf17a..46119af6b05861cf2775924847f52f1b39202a3f 100644 (file)
@@ -362,7 +362,7 @@ arglist_t itracku_args[] = {
 *******************************************************************************/
 
 static void
-itracku_rd_init_common(const char* fname)
+itracku_rd_init_common(const QString& fname)
 {
   new_waypoint_count = 0;
 
@@ -377,11 +377,11 @@ itracku_rd_init_common(const char* fname)
 }
 
 static void
-itracku_rd_ser_init(const char* fname)
+itracku_rd_ser_init(const QString& fname)
 {
 #if LATER
   int i;
-  if (0 == strcmp(fname, port_auto_detect_filename)) {
+  if (0 == strcmp(qPrintable(fname), port_auto_detect_filename)) {
     dbg(1, "auto detecting port for iTrackU device");
     for (i=1; !fd && i<port_auto_detect_max_port; ++i) {
       xasprintf(&port, "com%d", i);
@@ -428,10 +428,10 @@ itracku_rd_ser_init(const char* fname)
 #endif
   {
 
-    if (gbser_is_serial(fname)) {
-      port = xstrdup(fname);
+    if (gbser_is_serial(qPrintable(fname))) {
+      port = xstrdup(qPrintable(fname));
 
-      dbg(1, "opening port %s", fname);
+      dbg(1, "opening port %s", qPrintable(fname));
       if ((fd = gbser_init(port)) == NULL) {
         fatal(MYNAME ": can't initialise port \"%s\"", port);
       }
@@ -440,7 +440,7 @@ itracku_rd_ser_init(const char* fname)
         fatal(MYNAME ": can't initialise device on port \"%s\"", port);
       }
     } else {
-      fatal(MYNAME ": \"%s\" is not a valid serial port", fname);
+      fatal(MYNAME ": \"%s\" is not a valid serial port", qPrintable(fname));
     }
   }
 
@@ -448,7 +448,7 @@ itracku_rd_ser_init(const char* fname)
 }
 
 static void
-itracku_rd_init(const char* fname)
+itracku_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "r", MYNAME);
   itracku_rd_init_common(fname);
@@ -624,7 +624,7 @@ itracku_read(void)
 }
 
 static void
-itracku_wr_init(const char* fname)
+itracku_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "w", MYNAME);
 }
@@ -653,7 +653,7 @@ itracku_exit(void)          /* optional */
 }
 
 static void
-itracku_rt_init(const char* fname)
+itracku_rt_init(const QString& fname)
 {
   itracku_rd_ser_init(fname);
   itracku_device_write_string("WP AP-Exit");
index ed43278eb248081ee830810d8fc60ada285fd3af..ef702370c3f3cbb7a87610a467ac23fa17da5b68 100644 (file)
--- a/jogmap.cc
+++ b/jogmap.cc
@@ -75,7 +75,7 @@ xg_tag_mapping jogmap_map[] = {
 };
 
 static void
-jogmap_rd_init(const char* fname)
+jogmap_rd_init(const QString& fname)
 {
   trk = NULL;
   xml_init(fname, jogmap_map, NULL);
diff --git a/jtr.cc b/jtr.cc
index 9fbcae2bb171cd7b36757e21f0eddbe24fd751f3..e17a3bf805dbd07fa13e642c44a4991e7fab6e89 100644 (file)
--- a/jtr.cc
+++ b/jtr.cc
@@ -82,7 +82,7 @@ jtr_parse_date(const char* str, struct tm* tm)
 *******************************************************************************/
 
 static void
-jtr_rd_init(const char* fname)
+jtr_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "r", MYNAME);
 }
@@ -250,7 +250,7 @@ jtr_read(void)
 }
 
 static void
-jtr_wr_init(const char* fname)
+jtr_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "wb", MYNAME);
 }
diff --git a/kml.cc b/kml.cc
index b2a5797de711714dec93feab277273174380b4df..92884861849fe02f578ebc40fdb6fd8b18e77ab3 100644 (file)
--- a/kml.cc
+++ b/kml.cc
@@ -68,8 +68,8 @@ static int precision;
 
 static Waypoint* wpt_tmp;
 static int wpt_tmp_queued;
-static const char* posnfilename;
-static char* posnfilenametmp;
+static QString posnfilename;
+static QString posnfilenametmp;
 
 static route_head* gx_trk_head;
 static QList<gpsbabel::DateTime>* gx_trk_times;
@@ -460,7 +460,7 @@ void gx_trk_coord(xg_string args, const QXmlStreamAttributes*)
 
 static
 void
-kml_rd_init(const char* fname)
+kml_rd_init(const QString& fname)
 {
   xml_init(fname, kml_map, NULL);
   xml_ignore_tags(kml_tags_to_ignore);
@@ -480,7 +480,7 @@ kml_rd_deinit(void)
 }
 
 static void
-kml_wr_init(const char* fname)
+kml_wr_init(const QString& fname)
 {
   char u = 's';
   waypt_init_bounds(&kml_bounds);
@@ -523,10 +523,10 @@ kml_wr_init(const char* fname)
  * updated.
  */
 static void
-kml_wr_position_init(const char* fname)
+kml_wr_position_init(const QString& fname)
 {
   posnfilename = fname;
-  posnfilenametmp = xstrappend(xstrdup(fname), "-");
+  posnfilenametmp = QString("%1-").arg(fname);
   realtime_positioning = 1;
 
   /*
@@ -548,12 +548,12 @@ kml_wr_deinit(void)
   delete oqfile;
   oqfile = NULL;
 
-  if (posnfilenametmp) {
+  if (!posnfilenametmp.isEmpty()) {
 #if __WIN32__
-    MoveFileExA(posnfilenametmp, posnfilename,
+    MoveFileExA(qPrintable(posnfilenametmp), qPrintable(posnfilename),
                 MOVEFILE_REPLACE_EXISTING);
 #endif
-    rename(posnfilenametmp, posnfilename);
+    QFile::rename(posnfilenametmp, posnfilename);
   }
 }
 
@@ -561,10 +561,8 @@ static void
 kml_wr_position_deinit(void)
 {
 //     kml_wr_deinit();
-  if (posnfilenametmp) {
-    xfree(posnfilenametmp);
-    posnfilenametmp = NULL;
-  }
+  posnfilename.clear();
+  posnfilenametmp.clear();
 }
 
 
diff --git a/lmx.cc b/lmx.cc
index 66b07efb062bc1955a01e83c9c09fad069cd9bb0..b73bedee9c9ca24eddb6983093ca119b8a802905 100644 (file)
--- a/lmx.cc
+++ b/lmx.cc
@@ -55,7 +55,7 @@ arglist_t lmx_args[] = {
 
 
 static void
-lmx_wr_init(const char* fname)
+lmx_wr_init(const QString& fname)
 {
   ofd = gbfopen(fname, "w", MYNAME);
 }
@@ -316,7 +316,7 @@ static xg_tag_mapping gl_map[] = {
 };
 
 static void
-lmx_rd_init(const char* fname)
+lmx_rd_init(const QString& fname)
 {
   xml_init(fname, gl_map, NULL);
 }
index c2197569ef00b15eecb60a7901f4193d7465b9e7..653b07ddb4c2a3fa99e54911b77dfc6100743c0d 100644 (file)
@@ -324,7 +324,7 @@ arglist_t lowranceusr_args[] = {
 };
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -336,7 +336,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen_le(fname, "wb", MYNAME);
   mkshort_handle = mkshort_new_handle();
index fde70a824740b02a293504d525b5c0b19fab90ae..f2470453e154d1c4528095a3a8669bb0e6f6bf1a 100644 (file)
@@ -159,7 +159,7 @@ arglist_t lowranceusr4_args[] = {
 };
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -171,7 +171,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen_le(fname, "wb", MYNAME);
   mkshort_handle = mkshort_new_handle();
index a50ccbfea579e9b1ed82b9a508a51638a03cd7e4..9bf92bb1b002e2b558fec938204783d6b4901c00 100644 (file)
--- a/maggeo.cc
+++ b/maggeo.cc
@@ -47,7 +47,7 @@ maggeo_writemsg(const char* const buf)
 }
 
 static void
-maggeo_rd_init(const char* fname)
+maggeo_rd_init(const QString& fname)
 {
   maggeofile_in = gbfopen(fname, "rb", MYNAME);
 }
@@ -59,7 +59,7 @@ maggeo_rd_deinit(void)
 }
 
 static void
-maggeo_wr_init(const char* fname)
+maggeo_wr_init(const QString& fname)
 {
   if (waypt_count() > 200) {
     fatal(MYNAME ": eXplorist does not support more than 200 waypoints in one .gs file.\nDecrease the number of waypoints sent.\n");
index 5161e5adfb49d7e3f064ca16ac8830a6b1b78500..7c82e9fb2252c423a700e52cfbd90a592a7c11be 100644 (file)
@@ -32,6 +32,7 @@
 #include <stdio.h>
 #include <math.h>
 #include <time.h>
+#include <QtCore/QFileInfo>
 
 static int bitrate = 4800;
 static int wptcmtcnt;
@@ -57,7 +58,7 @@ static char* nukewpt = NULL;
 static int route_out_count;
 static int waypoint_read_count;
 static int wpt_len = 8;
-static const char* curfname;
+static QString curfname;
 static int extension_hint;
 // For Explorist GC/510/610/710 familes, bludgeon in GPX support.
 // (This has nothing to do with the Explorist 100...600 products.)
@@ -569,10 +570,10 @@ retry:
 static void* serial_handle = NULL;
 
 static int
-terminit(const char* portname, int create_ok)
+terminit(const QString& portname, int create_ok)
 {
-  if (gbser_is_serial(portname)) {
-    if (serial_handle = gbser_init(portname), NULL != serial_handle) {
+  if (gbser_is_serial(qPrintable(portname))) {
+    if (serial_handle = gbser_init(qPrintable(portname)), NULL != serial_handle) {
       int rc;
       if (rc = gbser_set_port(serial_handle, bitrate, 8, 0, 1), gbser_OK != rc) {
         fatal(MYNAME ": Can't configure port\n");
@@ -580,7 +581,7 @@ terminit(const char* portname, int create_ok)
     }
     is_file = 0;
     if (serial_handle == NULL) {
-      fatal(MYNAME ": Could not open serial port %s\n", portname);
+      fatal(MYNAME ": Could not open serial port %s\n", qPrintable(portname));
     }
     return 1;
   } else {
@@ -723,7 +724,7 @@ arglist_t mag_fargs[] = {
  * The part of the serial init that's common to read and write.
  */
 static void
-mag_serial_init_common(const char* portname)
+mag_serial_init_common(const QString& portname)
 {
   time_t now, later;
 
@@ -749,7 +750,7 @@ mag_serial_init_common(const char* portname)
     mag_readmsg(trkdata);
     if (current_time().toTime_t() > later) {
       fatal(MYNAME ": No acknowledgment from GPS on %s\n",
-            portname);
+            qPrintable(portname));
     }
   }
 
@@ -775,14 +776,13 @@ mag_serial_init_common(const char* portname)
 
 }
 static void
-mag_rd_init_common(const char* portname)
+mag_rd_init_common(const QString& portname)
 {
-  const char* ext;
   waypoint_read_count = 0;
   // For Explorist GC, intercept the device access and redirect to GPX.
   // We actually do the rd_init() inside read as we may have multiple
   // files that we have to read.
-  if (0 == strcmp(portname, "usb:")) {
+  if (portname == "usb:") {
     const char** dlist = os_get_magellan_mountpoints();
     explorist_info = explorist_ini_get(dlist);
     if (explorist_info) {
@@ -817,14 +817,13 @@ mag_rd_init_common(const char* portname)
    * queue or the WPT queue in the presence of (-w -r -t) we
    * divine a hint from the filename extension when we can.
    */
-  ext = strrchr(curfname, '.');
-  if (ext) {
-    ext++;
-    if (0 == case_ignore_strcmp(ext, "upt")) {
+  QString exten = QFileInfo(curfname).suffix();
+  if (exten.length() > 0) {
+    if (0 == exten.compare("upt", Qt::CaseInsensitive)) {
       extension_hint = WPTDATAMASK;
-    } else if (0 == case_ignore_strcmp(ext, "log")) {
+    } else if (0 == exten.compare("log", Qt::CaseInsensitive)) {
       extension_hint = TRKDATAMASK;
-    } else if (0 == case_ignore_strcmp(ext, "rte")) {
+    } else if (0 == exten.compare("rte", Qt::CaseInsensitive)) {
       extension_hint = RTEDATAMASK;
     }
   }
@@ -833,7 +832,7 @@ mag_rd_init_common(const char* portname)
 }
 
 static void
-mag_rd_init(const char* portname)
+mag_rd_init(const QString& portname)
 {
   explorist = 0;
   suppress_ack = 1;
@@ -841,14 +840,14 @@ mag_rd_init(const char* portname)
 }
 
 static void
-magX_rd_init(const char* portname)
+magX_rd_init(const QString& portname)
 {
   explorist = 1;
   mag_rd_init_common(portname);
 }
 
 static void
-mag_wr_init_common(const char* portname)
+mag_wr_init_common(const QString& portname)
 {
   suppress_ack = 0;
   if (bs) {
@@ -879,7 +878,7 @@ mag_wr_init_common(const char* portname)
  * Entry point for extended (explorist) points.
  */
 static void
-magX_wr_init(const char* portname)
+magX_wr_init(const QString& portname)
 {
   wpt_len = 20;
   explorist = 1;
@@ -889,7 +888,7 @@ magX_wr_init(const char* portname)
 }
 
 static void
-mag_wr_init(const char* portname)
+mag_wr_init(const QString& portname)
 {
   explorist = 0;
   wpt_len = 8;
@@ -918,6 +917,8 @@ mag_deinit(void)
   waypt_flush(&rte_wpt_tmp);
 
   trk_head = NULL;
+
+  curfname.clear();
 }
 
 static void
diff --git a/main.cc b/main.cc
index 43bde9ed7ce8ed8ac0ae49fb7b0fa276cd276abf..32e1bd44411483d5fe7089f212187c4ff229bcb1 100644 (file)
--- a/main.cc
+++ b/main.cc
@@ -18,6 +18,7 @@
  */
 
 #include <QtCore/QTextCodec>
+#include <QtCore/QCoreApplication>
 
 #include "defs.h"
 #include "filterdefs.h"
@@ -240,6 +241,15 @@ main(int argc, char* argv[])
   queue* wpt_head_bak, *rte_head_bak, *trk_head_bak;   /* #ifdef UTF8_SUPPORT */
   signed int wpt_ct_bak, rte_ct_bak, trk_ct_bak;       /* #ifdef UTF8_SUPPORT */
   arg_stack_t* arg_stack = NULL;
+
+  // Create a QCoreApplication object to handle application initialization. 
+  // TODO: Someday we may actually use this, but for now we are just trying
+  // to get Qt initialized, especially locale related QTextCodec stuff.
+  // For example, this will get the QTextCodec::codecForLocale set
+  // correctly.
+  QCoreApplication app(argc, argv);
+  // TODO: use QCoreApplication::arguments() to process command line.
+
   (void) new gpsbabel::UsAsciiCodec(); /* make sure a US-ASCII codec is available */
 
 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
@@ -254,12 +264,14 @@ main(int argc, char* argv[])
   // The first invocation of QTextCodec::codecForLocale() may result in LC_ALL being set to the native environment
   // as opposed to the initial default "C" locale.
   // This was demonstrated with Qt5 on Mac OS X.
+  // TODO: This need to invoke QTextCodec::codecForLocale() may be taken care of
+  // by creating a QCoreApplication.
 #ifdef DEBUG_LOCALE
-  printf("%s\n",setlocale(LC_ALL, NULL));
+  printf("Initial locale: %s\n",setlocale(LC_ALL, NULL));
 #endif
   (void) QTextCodec::codecForLocale();
 #ifdef DEBUG_LOCALE
-  printf("%s\n",setlocale(LC_ALL, NULL));
+  printf("Locale after codedForLocale: %s\n",setlocale(LC_ALL, NULL));
 #endif
   // As recommended in QCoreApplication reset the locale to the default.
   // Note the documentation says to set LC_NUMERIC, but QCoreApplicationPrivate::initLocale()
@@ -271,7 +283,17 @@ main(int argc, char* argv[])
 #endif
     setlocale(LC_NUMERIC,"C");
 #ifdef DEBUG_LOCALE
-    printf("%s\n",setlocale(LC_ALL, NULL));
+    printf("LC_ALL: %s\n",setlocale(LC_ALL, NULL));
+#endif
+  }
+  /* reset LC_TIME for strftime */
+  if (strcmp(setlocale(LC_TIME,0), "C") != 0) {
+#ifdef DEBUG_LOCALE
+    printf("Resetting LC_TIME\n");
+#endif
+    setlocale(LC_TIME,"C");
+#ifdef DEBUG_LOCALE
+    printf("LC_ALL: %s\n",setlocale(LC_ALL, NULL));
 #endif
   }
 
@@ -394,7 +416,7 @@ main(int argc, char* argv[])
       cet_convert_init(ivecs->encode, ivecs->fixed_encode);    /* init by module vec */
 
       start_session(ivecs->name, fname);
-      ivecs->rd_init(fname);
+      ivecs->rd_init(QString::fromLocal8Bit(fname));
       ivecs->read();
       ivecs->rd_deinit();
 
@@ -426,7 +448,7 @@ main(int argc, char* argv[])
         trk_ct_bak = -1;
         rte_head_bak = trk_head_bak = NULL;
 
-        ovecs->wr_init(ofname);
+        ovecs->wr_init(QString::fromLocal8Bit(ofname));
 
         if (global_opts.charset != &cet_cs_vec_utf8) {
           /*
@@ -628,7 +650,7 @@ main(int argc, char* argv[])
     if (ivecs->rd_init == NULL) {
       fatal("Format does not support reading.\n");
     }
-    ivecs->rd_init(argv[0]);
+    ivecs->rd_init(QString::fromLocal8Bit(argv[0]));
     ivecs->read();
     ivecs->rd_deinit();
 
@@ -643,7 +665,7 @@ main(int argc, char* argv[])
         fatal("Format does not support writing.\n");
       }
 
-      ovecs->wr_init(argv[1]);
+      ovecs->wr_init(QString::fromLocal8Bit(argv[1]));
       ovecs->write();
       ovecs->wr_deinit();
 
@@ -689,7 +711,7 @@ main(int argc, char* argv[])
         fatal("An input file (-f) must be specified.\n");
       }
       start_session(ivecs->name, fname);
-      ivecs->position_ops.rd_init(fname);
+      ivecs->position_ops.rd_init(QString::fromLocal8Bit(fname));
     }
 
     if (global_opts.masked_objective & ~POSNDATAMASK) {
@@ -707,7 +729,7 @@ main(int argc, char* argv[])
     }
 
     if (ovecs && ovecs->position_ops.wr_init) {
-      ovecs->position_ops.wr_init(ofname);
+      ovecs->position_ops.wr_init(QString::fromLocal8Bit(ofname));
     }
 
     tracking_status.request_terminate = 0;
@@ -724,7 +746,7 @@ main(int argc, char* argv[])
       }
       if (wpt) {
         if (ovecs) {
-//                                     ovecs->position_ops.wr_init(ofname);
+//                                     ovecs->position_ops.wr_init(QString::fromLocal8Bit(ofname));
           ovecs->position_ops.wr_position(wpt);
 //                                     ovecs->position_ops.wr_deinit();
         } else {
index c948791a1db696d6ecf6ad650c61cdfd6428f3b8..8ca0ef98cd55e571276e96208433ad60599dfa38 100644 (file)
@@ -61,7 +61,7 @@ arglist_t tr7_args[] = {
 *******************************************************************************/
 
 static void
-tr7_rd_init(const char* fname)
+tr7_rd_init(const QString& fname)
 {
   fin = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -263,7 +263,7 @@ tr7_disp_waypt_cb(const Waypoint* wpt)
 }
 
 static void
-tr7_wr_init(const char* fname)
+tr7_wr_init(const QString& fname)
 {
   fout = gbfopen_le(fname, "wb", MYNAME);
   gbfputint32(TR7_TRACK_MAGIC, fout);
index 029ebe8c40a4fcc98bded478cda2c01f9f9439d7..7bb249f2661497534313422f24c0658f0d51539b 100644 (file)
@@ -38,7 +38,7 @@ arglist_t mapbar_track_args[] = {
 *******************************************************************************/
 
 static void
-mapbar_track_rd_init(const char* fname)
+mapbar_track_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "r", MYNAME);
 }
index f662eaf5f68a203f73faabb22b90eee3744536b1..6b478f450aa9cb1dc2eb646235cc5a8ddd74f46c 100644 (file)
@@ -68,7 +68,7 @@ void MapfactorRead()
 }
 
 static void
-mapfactor_rd_init(const char* fname)
+mapfactor_rd_init(const QString& fname)
 {
   mapfactor_read_fname = fname;
 }
@@ -98,7 +98,7 @@ mapfactor_rd_deinit(void)
 }
 
 static void
-mapfactor_wr_init(const char* fname)
+mapfactor_wr_init(const QString& fname)
 {
   oqfile = new gpsbabel::File(fname);
   oqfile->open(QIODevice::WriteOnly | QIODevice::Text);
index b0caad99a20eb6033048bf64be0580aed25f30ee..fec6ef5c1fb3ffb6b64146fb9475287c20c75617 100644 (file)
@@ -72,7 +72,7 @@ mapsend_init_opts(const char isReading)       /* 1=read, 2=write */
 }
 
 static void
-mapsend_rd_init(const char* fname)
+mapsend_rd_init(const QString& fname)
 {
   mapsend_init_opts(1);
   mapsend_file_in = gbfopen_le(fname, "rb", MYNAME);
@@ -85,7 +85,7 @@ mapsend_rd_deinit(void)
 }
 
 static void
-mapsend_wr_init(const char* fname)
+mapsend_wr_init(const QString& fname)
 {
   mapsend_init_opts(0);
   mapsend_file_out = gbfopen(fname, "wb", MYNAME);
index 81fe6981b96ba2650702791f380a8ce717dc3979..b1769f6bbcd7c6d1d56d7cfb0af2d421ff5e3885 100644 (file)
@@ -26,6 +26,7 @@
 #include "jeeps/gpsmath.h"
 #include <stdio.h>
 #include <stdlib.h>
+#include <QtCore/QFile>
 
 static gbfile* mps_file_in;
 static gbfile* mps_file_out;
@@ -37,8 +38,8 @@ static        int             mps_ver_out = 0;
 static int             mps_ver_temp = 0;
 
 /* Temporary pathname used when merging gpsbabel output with an existing file */
-static char* tempname;
-static char* fin_name;
+static QString tempname;
+static QString fin_name;
 
 static const Waypoint* prevRouteWpt;
 /* Private queues of written out waypoints */
@@ -225,7 +226,7 @@ mps_converted_icon_number(const int icon_num, const int mpsver, garmin_formats_e
 }
 
 static void
-mps_rd_init(const char* fname)
+mps_rd_init(const QString& fname)
 {
   mps_file_in = gbfopen_le(fname, "rb", MYNAME);
 
@@ -246,9 +247,9 @@ mps_rd_deinit(void)
 }
 
 static void
-mps_wr_init(const char* fname)
+mps_wr_init(const QString& fname)
 {
-  fin_name = xstrdup(fname);
+  fin_name = fname;
   if (mpsmergeouts) {
     mpsmergeout = atoi(mpsmergeouts);
   }
@@ -265,14 +266,14 @@ mps_wr_init(const char* fname)
         /* create a temporary name  based on a random char and the existing name */
         /* then test if it already exists, if so try again with another rand num */
         /* yeah, yeah, so there's probably a library function for this           */
-        xasprintf(&tempname, "%s.%08x", fname, rand());
+        tempname = QString("%1.%2").arg(fname).arg(rand(), 8, 16, QChar('0'));
         mps_file_temp = gbfopen_le(tempname, "rb", MYNAME);
         if (mps_file_temp == NULL) {
           break;
         }
         gbfclose(mps_file_temp);
       }
-      rename(fname, tempname);
+      QFile::rename(fname, tempname);
       mps_file_temp = gbfopen_le(tempname, "rb", MYNAME);
     }
   }
@@ -292,8 +293,8 @@ mps_wr_deinit(void)
 
   if (mpsmergeout) {
     gbfclose(mps_file_temp);
-    remove(tempname);
-    xfree(tempname);
+    QFile::remove(tempname);
+    tempname.clear();
   }
 
   if (written_wpt_mkshort_handle) {
@@ -302,7 +303,7 @@ mps_wr_deinit(void)
   /* flush the "private" queue of waypoints written */
   mps_wpt_q_deinit(&written_wpt_head);
   mps_wpt_q_deinit(&written_route_wpt_head);
-  xfree(fin_name);
+  fin_name.clear();
 }
 
 /*
@@ -1844,8 +1845,8 @@ mps_write(void)
         /* then delete the "real" file and rename the temporarily renamed file back */
         gbfclose(mps_file_temp);
         gbfclose(mps_file_out);
-        remove(fin_name);
-        rename(tempname, fin_name);
+        QFile::remove(fin_name);
+        QFile::rename(tempname, fin_name);
         fatal(MYNAME ": merge source version is %d, requested out version is %d\n", mps_ver_temp, atoi(mpsverout));
       }
     } else {
diff --git a/mmo.cc b/mmo.cc
index ee7a53bf1658a7f941ae6fe5e4d9e44866a4101f..3c0d617269bdf6fb26e091d22a2cec5f7cd21f04 100644 (file)
--- a/mmo.cc
+++ b/mmo.cc
@@ -994,7 +994,7 @@ mmo_finalize_rtept_cb(const Waypoint* wptref)
 *******************************************************************************/
 
 static void
-mmo_rd_init(const char* fname)
+mmo_rd_init(const QString& fname)
 {
   int i;
 
@@ -1445,7 +1445,7 @@ mmo_write_trk_tail_cb(const route_head* trk)
 /**************************************************************************/
 
 static void
-mmo_wr_init(const char* fname)
+mmo_wr_init(const QString& fname)
 {
   fout = gbfopen_le(fname, "wb", MYNAME);
 
index e0ab8fc0ea6a5f210bb4130f574f47f1e443c7c7..a6c430c6a6cd270719330ce1064c441240bd8c87 100644 (file)
@@ -60,7 +60,7 @@ arglist_t mtk_locus_args[] = {
   ARG_TERMINATOR
 };
 
-static void mtk_locus_rd_init(const char* fname);
+static void mtk_locus_rd_init(const QString& fname);
 static void mtk_locus_rd_deinit(void);
 static void mtk_locus_read(void);
 
@@ -118,16 +118,16 @@ static int calculate_checksum(const char* s, int length);
 static void dbg(int l, const char* msg, ...);
 
 static void
-mtk_locus_rd_init(const char* fname)
+mtk_locus_rd_init(const QString& fname)
 {
-  dbg(1, "Opening file: %s\n", fname);
+  dbg(1, "Opening file: %s\n", qPrintable(fname));
 
-  if (gbser_is_serial(fname)) {
+  if (gbser_is_serial(qPrintable(fname))) {
 
     dbg(1, "Input is a serial port\n");
     read_mode = rm_serial;
-    if ((sfd = gbser_init(fname)) == NULL) {
-      fatal(MYNAME ": Can't initialise port \"%s\" (%s)\n", fname, strerror(errno));
+    if ((sfd = gbser_init(qPrintable(fname))) == NULL) {
+      fatal(MYNAME ": Can't initialise port \"%s\" (%s)\n", qPrintable(fname), strerror(errno));
     }
     set_baudrate();
     gbser_flush(sfd);
@@ -137,7 +137,7 @@ mtk_locus_rd_init(const char* fname)
     dbg(1, "Input is a normal file\n");
     read_mode = rm_file;
     if ((ffd = gbfopen(fname, "rb", MYNAME)) == NULL) {
-      fatal(MYNAME ": Can't initialise port \"%s\" (%s)\n", fname, strerror(errno));
+      fatal(MYNAME ": Can't initialise port \"%s\" (%s)\n", qPrintable(fname), strerror(errno));
     }
   }
 
index 95100be6dcde1982b96ba148f9e47bfa31369934..51f3b1283ee3a34b1c72f308d27a3b5606deaef8 100644 (file)
@@ -240,8 +240,8 @@ const char CMD_LOG_ERASE[]  = "$PMTK182,6,1*3E\r\n";
 const char CMD_LOG_STATUS[] = "$PMTK182,2,7*3C\r\n";
 
 static int  mtk_log_len(unsigned int bitmask);
-static void mtk_rd_init(const char* fname);
-static void file_init(const char* fname);
+static void mtk_rd_init(const QString& fname);
+static void file_init(const QString& fname);
 static void file_deinit(void) ;
 static void holux245_init(void);
 static void file_read(void);
@@ -417,21 +417,21 @@ static int do_cmd(const char* cmd, const char* expect, char** rslt, time_t timeo
 /*******************************************************************************
 * %%%        global callbacks called by gpsbabel main process              %%% *
 *******************************************************************************/
-static void mtk_rd_init_m241(const char* fname)
+static void mtk_rd_init_m241(const QString& fname)
 {
   mtk_device = HOLUX_M241;
   mtk_rd_init(fname);
 }
 
-static void mtk_rd_init(const char* fname)
+static void mtk_rd_init(const QString& fname)
 {
   int rc;
   char* model;
 
-  port = xstrdup(fname);
+  port = xstrdup(qPrintable(fname));
 
   errno = 0;
-  dbg(1, "Opening port %s...\n", fname);
+  dbg(1, "Opening port %s...\n", port);
   if ((fd = gbser_init(port)) == NULL) {
     fatal(MYNAME ": Can't initialise port \"%s\" (%s)\n", port, strerror(errno));
   }
@@ -1418,17 +1418,17 @@ static int mtk_log_len(unsigned int bitmask)
 
 /********************** File-in interface ********************************/
 
-static void file_init_m241(const char* fname)
+static void file_init_m241(const QString& fname)
 {
   mtk_device = HOLUX_M241;
   file_init(fname);
 }
 
-static void file_init(const char* fname)
+static void file_init(const QString& fname)
 {
-  dbg(4, "Opening file %s...\n", fname);
-  if (fl = fopen(fname, "rb"), NULL == fl) {
-    fatal(MYNAME ": Can't open file '%s'\n", fname);
+  dbg(4, "Opening file %s...\n", qPrintable(fname));
+  if (fl = fopen(qPrintable(fname), "rb"), NULL == fl) {
+    fatal(MYNAME ": Can't open file '%s'\n", qPrintable(fname));
   }
   switch (mtk_device) {
   case HOLUX_M241:
index 3a660c55147f753f252c90e6c749df1373ccc1fd..5ac119625d3573847ef61b8c00f78703ec464903 100644 (file)
--- a/mynav.cc
+++ b/mynav.cc
@@ -123,7 +123,7 @@ mynav_rd_line(QString line)
 //***************************************************************************
 
 static void
-mynav_rd_init(const char* fname)
+mynav_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "rb", MYNAME);
   mynav_track = route_head_alloc();
index db910daa77379a3f76a06cbad121602930625830..c40ad9722fb3c98a447a18d2d9fc7c28e5a8ac12 100644 (file)
@@ -22,7 +22,7 @@
 #include "src/core/file.h"
 
 static char* noretired = NULL;
-static const char* read_fname = NULL;
+static QString read_fname;
 
 static
 arglist_t nav_args[] = {
@@ -91,7 +91,7 @@ nc_mkcont(const QString& t)
 }
 
 static void
-nav_rd_init(const char* fname)
+nav_rd_init(const QString& fname)
 {
   read_fname = fname;
 }
@@ -208,7 +208,7 @@ nav_rd_deinit(void)
 }
 
 static void
-nav_wr_init(const char* fname)
+nav_wr_init(const QString& fname)
 {
   fatal(MYNAME ": Does not support writing Navicache files.\n");
 }
index 02314c824c18fea665a119d2f6a10ad29f97458c..76f2c783f6f6ac0ac991ee26480394b7264be390 100644 (file)
@@ -300,7 +300,7 @@ data_write(void)
 
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen_le(fname, "wb", MYNAME);
   ng_fill_header_default();
@@ -320,7 +320,7 @@ wr_deinit(void)
 /*=========================== Read data functions ==================================*/
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen_le(fname, "rb", MYNAME);
 
index c586c65702fdd07ca111090cd1417ad39c841663..bdf884a2f7fda748e6a70dd4328a77b0c7ac3650 100644 (file)
@@ -1087,11 +1087,11 @@ nuke(void)
 }
 
 static void
-navilink_common_init(const char* name)
+navilink_common_init(const QString& name)
 {
-  if (gbser_is_serial(name)) {
-    if ((serial_handle = gbser_init(name)) == NULL) {
-      fatal(MYNAME ": Could not open serial port %s\n", name);
+  if (gbser_is_serial(qPrintable(name))) {
+    if ((serial_handle = gbser_init(qPrintable(name))) == NULL) {
+      fatal(MYNAME ": Could not open serial port %s\n", qPrintable(name));
     }
 
     if (gbser_set_port(serial_handle, 115200, 8, 0, 1) != gbser_OK) {
@@ -1130,14 +1130,14 @@ navilink_common_init(const char* name)
 }
 
 static void
-navilink_rd_init(const char* name)
+navilink_rd_init(const QString& name)
 {
   operation = READING;
   navilink_common_init(name);
 }
 
 static void
-navilink_wr_init(const char* name)
+navilink_wr_init(const QString& name)
 {
   operation = WRITING;
   navilink_common_init(name);
index 13a46eee33b9738e7ab946fddb0521081b7ceccb..5626ef334e312f68dc4a3a15f289ea4e46e33a08 100644 (file)
@@ -34,7 +34,7 @@ static int trkpts;
 *******************************************************************************/
 
 static void
-navitel_rd_init(const char* fname)
+navitel_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "rb", MYNAME);
 }
@@ -74,7 +74,7 @@ navitel_read_track(void)
 }
 
 static void
-navitel_wr_init(const char* fname)
+navitel_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "wb", MYNAME);
 }
index b60b8f4b7cf723c91bc36f521d4f454ed6cfc35f..aef610ce507db250503b8fbff1000c441d79af33 100644 (file)
@@ -65,7 +65,7 @@ arglist_t netstumbler_args[] = {
 };
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen(fname, "rb", MYNAME);
   macstumbler = 0;
diff --git a/nmea.cc b/nmea.cc
index 116a8e64e4b4f4df7dc33a0e0d81743c92328a8b..150f685193e3591d78f3948805006d508eaa6bed 100644 (file)
--- a/nmea.cc
+++ b/nmea.cc
@@ -162,7 +162,7 @@ static struct tm tm;
 static Waypoint* curr_waypt;
 static Waypoint* last_waypt;
 static void* gbser_handle;
-static const char* posn_fname;
+static QString posn_fname;
 static queue pcmpt_head;
 
 static int without_date;       /* number of created trackpoints without a valid date */
@@ -194,7 +194,7 @@ static int datum;
 static int had_checksum;
 
 static Waypoint* nmea_rd_posn(posn_status*);
-static void nmea_rd_posn_init(const char* fname);
+static void nmea_rd_posn_init(const QString& fname);
 
 arglist_t nmea_args[] = {
   {"snlen", &snlenopt, "Max length of waypoint name to write", "6", ARGTYPE_INT, "1", "64" },
@@ -262,7 +262,7 @@ nmea_release_wpt(Waypoint* wpt)
 }
 
 static void
-nmea_rd_init(const char* fname)
+nmea_rd_init(const QString& fname)
 {
   curr_waypt = NULL;
   last_waypt = NULL;
@@ -317,10 +317,13 @@ nmea_rd_deinit(void)
     fatal("nmea_rd_deinit: illegal read_mode.\n");
     break;
   }
+
+  posn_fname.clear();
+
 }
 
 static void
-nmea_wr_init(const char* portname)
+nmea_wr_init(const QString& portname)
 {
   CHECK_BOOL(opt_gprmc);
   CHECK_BOOL(opt_gpgga);
@@ -1096,13 +1099,13 @@ nmea_read(void)
 }
 
 void
-nmea_rd_posn_init(const char* fname)
+nmea_rd_posn_init(const QString& fname)
 {
-  if ((gbser_handle = gbser_init(fname)) != NULL) {
+  if ((gbser_handle = gbser_init(qPrintable(fname))) != NULL) {
     read_mode = rm_serial;
     gbser_set_speed(gbser_handle, 4800);
   } else {
-    fatal(MYNAME ": Could not open '%s' for position tracking.\n", fname);
+    fatal(MYNAME ": Could not open '%s' for position tracking.\n", qPrintable(fname));
   }
 
   gbser_flush(gbser_handle);
@@ -1206,7 +1209,7 @@ nmea_rd_posn(posn_status* posn_status)
           continue;
         }
       }
-      fatal(MYNAME ": No data received on %s.\n", posn_fname);
+      fatal(MYNAME ": No data received on %s.\n", qPrintable(posn_fname));
     }
     nmea_parse_one_line(ibuf);
     if (lt != last_read_time) {
@@ -1385,7 +1388,7 @@ nmea_write(void)
 }
 
 static void
-nmea_wr_posn_init(const char* fname)
+nmea_wr_posn_init(const QString& fname)
 {
   nmea_wr_init(fname);
 }
diff --git a/nmn4.cc b/nmn4.cc
index 41f5b8294368b653ba7f8e6e7b2446c9385b096b..e466da29130137019a47d325faae436495a665d1 100644 (file)
--- a/nmn4.cc
+++ b/nmn4.cc
@@ -243,7 +243,7 @@ nmn4_write_data(void)
 /* %%% global callbacks %%% */
 
 static void
-nmn4_rd_init(const char* fname)
+nmn4_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "rb", MYNAME);
 }
@@ -261,7 +261,7 @@ nmn4_read(void)
 }
 
 static void
-nmn4_wr_init(const char* fname)
+nmn4_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "wb", MYNAME);
 }
diff --git a/osm.cc b/osm.cc
index d5f91c86dcc1ddadf8d6ef81a02c77d539ebef63..a0abe232bafa0e73b0da7dce6421134d55445cc4 100644 (file)
--- a/osm.cc
+++ b/osm.cc
@@ -676,7 +676,7 @@ osm_way_end(xg_string args, const QXmlStreamAttributes*)
 }
 
 static void
-osm_rd_init(const char* fname)
+osm_rd_init(const QString& fname)
 {
   wpt = NULL;
   rte = NULL;
@@ -927,7 +927,7 @@ osm_rte_disp_trail(const route_head* rte)
 /*-----------------------------------------------------------------------------*/
 
 static void
-osm_wr_init(const char* fname)
+osm_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "w", MYNAME);
 
diff --git a/ozi.cc b/ozi.cc
index 2786a8117d85e94f95f1d012a0130324b51ac089..361db4b1dd6c679666bdf2ee01d1f04a8817ee86 100644 (file)
--- a/ozi.cc
+++ b/ozi.cc
@@ -30,6 +30,7 @@
 #include <math.h>                /* for floor */
 #include <stdlib.h>
 #include <stdio.h>
+#include <QtCore/QFileInfo>
 
 #define MYNAME        "OZI"
 #define BADCHARS       ",\r\n"
@@ -116,7 +117,7 @@ arglist_t ozi_args[] = {
 
 static gpsdata_type ozi_objective;
 
-static char* ozi_ofname = NULL;
+static QString ozi_ofname;
 
 static void
 ozi_copy_fsdata(ozi_fsdata** dest, ozi_fsdata* src)
@@ -185,41 +186,37 @@ ozi_convert_datum(Waypoint* wpt)
 }
 
 static void
-ozi_openfile(char* fname)
+ozi_openfile(const QString& fname)
 {
-  char* c, *cx, *tmpname;
   const char* ozi_extensions[] = {0, "plt", "wpt", "rte"};
-  char buff[32];
 
   /* if we're doing multi-track output, sequence the filenames like:
    * mytrack.plt, mytrack-1.plt...unless we're writing to stdout.
    */
 
-  if (0 == strcmp(fname, "-")) {
+  if (fname == "-") {
     if (! file_out) {
       file_out = gbfopen(fname, "wb", MYNAME);
     }
     return;
   }
 
+  QString buff;
   if ((track_out_count) && (ozi_objective == trkdata)) {
-    sprintf(buff, "-%d", track_out_count);
+    buff = QString("-%d").arg(track_out_count);
   } else {
-    buff[0] = '\0';
+    buff = QString("");
   }
 
   /* remove extension and add buff + ozi's extension */
-  c = strrchr(fname, '.');
-  if (c && (cx = strrchr(fname, '/')) && (cx > c)) {
-    c = NULL;
-  }
-  if (c && (cx = strrchr(fname, '\\')) && (cx > c)) {
-    c = NULL;
-  }
-  if (c == NULL) {
-    c = fname + strlen(fname);
+  QString sname(fname);
+  int suffix_len = QFileInfo(fname).suffix().length();
+  if (suffix_len > 0) {
+    /* drop the suffix and the period */
+    sname.chop(suffix_len + 1);
   }
-  xasprintf(&tmpname, "%*.*s%s.%s", (int)(c - fname),(int)(c - fname), fname, buff, ozi_extensions[ozi_objective]);
+
+  QString tmpname = QString("%1%2.%3").arg(sname).arg(buff).arg(ozi_extensions[ozi_objective]);
 
   /* re-open file_out with the new filename */
   if (file_out) {
@@ -229,8 +226,6 @@ ozi_openfile(char* fname)
 
   file_out = gbfopen(tmpname, "wb", MYNAME);
 
-  xfree(tmpname);
-
   return;
 }
 
@@ -421,7 +416,7 @@ ozi_init_units(const int direction) /* 0 = in; 1 = out */
 }
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen(fname, "rb", MYNAME);
 
@@ -438,7 +433,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
 
   /* At this point, we have no idea whether we'll be writing waypoint,
@@ -446,7 +441,7 @@ wr_init(const char* fname)
    * we're actually ready to write.
    */
 
-  ozi_ofname = (char*)fname;
+  ozi_ofname = fname;
 
   mkshort_handle = mkshort_new_handle();
 
@@ -484,7 +479,7 @@ wr_deinit(void)
     gbfclose(file_out);
     file_out = NULL;
   }
-  ozi_ofname = NULL;
+  ozi_ofname.clear();
 
   mkshort_del_handle(&mkshort_handle);
 }
diff --git a/pcx.cc b/pcx.cc
index c0049acf77f6b6dbacc19b1023b292ff95216ffc..52bfe44131c165ace0624ca7bf9b290b322b67cc 100644 (file)
--- a/pcx.cc
+++ b/pcx.cc
@@ -58,7 +58,7 @@ arglist_t pcx_args[] = {
 };
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen(fname, "rb", MYNAME);
 }
@@ -70,7 +70,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen(fname, "w", MYNAME);
   mkshort_handle = mkshort_new_handle();
index 5fef6d9da342e7927752dc3550334c01b3e273af..c263593cd509d15a8193db695731fbe688141658 100644 (file)
@@ -54,7 +54,7 @@ typedef struct breadcrumb {
 static gbfile* file_in, *file_out;
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -66,7 +66,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen_le(fname, "wb", MYNAME);
 }
index 744747dbbbc7c417ee26e8c4351f92718cd00444..a31fe3b3799c1bf06ca9cfb15ea51ea35190ff13 100644 (file)
@@ -50,7 +50,7 @@ static xg_tag_mapping gl_map[] = {
 };
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   xml_init(fname, gl_map, NULL);
 }
@@ -80,7 +80,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   fatal("Writing file of type %s is not supported\n", MYNAME);
 }
index 072e501e67d8ff3c4ee971e868bcb60fdb6f92f4..7a730ae12b4b26fbc38599ef21e80f7f1faafe74 100644 (file)
@@ -28,7 +28,7 @@
 static gbfile* file_in, *file_out;
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen_le(fname, "r", MYNAME);
 }
@@ -96,7 +96,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen_le(fname, "w", MYNAME);
 }
index 9f0dd9ca55249b77b727d8708b5af503607086ae..02cd7f258ba8499d59bcc59a55fecdc87ff815c7 100644 (file)
@@ -179,7 +179,7 @@ psit_find_icon_number_from_desc(const char* desc)
 }
 
 static void
-psit_rd_init(const char* fname)
+psit_rd_init(const QString& fname)
 {
   psit_file_in = gbfopen(fname, "r", MYNAME);
 }
@@ -191,7 +191,7 @@ psit_rd_deinit(void)
 }
 
 static void
-psit_wr_init(const char* fname)
+psit_wr_init(const QString& fname)
 {
   psit_file_out = gbfopen(fname, "w", MYNAME);
 }
index 831d4e4845c6bdffee9195cffcdc9f097a5275c4..60ac8a628be2c65c812d5596c9f8335f4b88e7d6 100644 (file)
--- a/random.cc
+++ b/random.cc
@@ -97,7 +97,7 @@ rand_qstr(const int maxlen, const char* fmt)
 }
 
 static void
-random_rd_init(const char* fname)
+random_rd_init(const QString& fname)
 {
 }
 
index 59fada1bea17070efcdf0e44b21d6c5354f74627..ebef783758e2acd2c0b657a15e502d2541bfe064 100644 (file)
@@ -167,9 +167,9 @@ find_symbol_num(const QString& descr)
 /* ============================================= */
 
 static void
-raymarine_rd_init(const char* fname)
+raymarine_rd_init(const QString& fname)
 {
-  fin = inifile_init(fname, MYNAME);
+  fin = inifile_init(qPrintable(fname), MYNAME);
   if (fin->unicode) {
     cet_convert_init(CET_CHARSET_UTF8, 1);
   }
@@ -452,7 +452,7 @@ raymarine_new_short_handle(void)
 }
 
 static void
-raymarine_wr_init(const char* fname)
+raymarine_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "wb", MYNAME);
 
index 4557e77750194e8b80b98372ca1efbeb11436dda..d2cfe5b1c0881c6f6a42d3e97843f3676282493a 100644 (file)
@@ -80,7 +80,7 @@ Skip(gbfile* f, gbsize_t distance)
 }
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   infile = gbfopen(fname, "rb", MYNAME);
   if (split && (turns_important || turns_only)) {
@@ -464,7 +464,7 @@ my_read(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   fatal(MYNAME ":Not enough information is known about this format to write it.\n");
 }
diff --git a/sbn.cc b/sbn.cc
index d19c3c7d5b4d5375ea7afa6cc76b05720ac6fc36..45fecec0a5b24d0972ffbbdb28ead3b2f29d176f 100644 (file)
--- a/sbn.cc
+++ b/sbn.cc
@@ -278,7 +278,7 @@ add_logpoints(route_head* track)
 /**********************************************************************/
 
 static void
-sbn_rd_init(const char* fname)
+sbn_rd_init(const QString& fname)
 {
   file_handle = gbfopen(fname, "r", MYNAME);
 }
diff --git a/sbp.cc b/sbp.cc
index 31774693f4052cdf763973ea004d67db949046a8..c940b7144f30bab61b40a84b2b9c827b023663ad 100644 (file)
--- a/sbp.cc
+++ b/sbp.cc
@@ -37,7 +37,7 @@ arglist_t sbp_args[] = {
 *******************************************************************************/
 
 static void
-sbp_rd_init(const char* fname)
+sbp_rd_init(const QString& fname)
 {
   file_handle = gbfopen(fname, "r", MYNAME);
 }
index 58157cb509d801e60d061634411111d448054d95..1256bc076f5aec014c73b89b37b1ffd2e39d5a0c 100644 (file)
--- a/shape.cc
+++ b/shape.cc
@@ -33,7 +33,7 @@ static unsigned poly_count;
 static double* polybufx;
 static double* polybufy;
 static double* polybufz;
-static const char* ofname;
+static QString ofname;
 static int nameidx;
 static int urlidx;
 
@@ -54,16 +54,16 @@ arglist_t shp_args[] = {
 };
 
 static void
-my_rd_init(const char* fname)
+my_rd_init(const QString& fname)
 {
-  ihandle = SHPOpen(fname, "rb");
+  ihandle = SHPOpen(qPrintable(fname), "rb");
   if (ihandle == NULL) {
-    fatal(MYNAME ":Cannot open shp file %s for reading\n", fname);
+    fatal(MYNAME ":Cannot open shp file %s for reading\n", qPrintable(fname));
   }
 
-  ihandledb = DBFOpen(fname, "rb");
+  ihandledb = DBFOpen(qPrintable(fname), "rb");
   if (ihandledb == NULL) {
-    fatal(MYNAME ":Cannot open dbf file %s for reading\n", fname);
+    fatal(MYNAME ":Cannot open dbf file %s for reading\n", qPrintable(fname));
   }
 
   if (opt_name) {
@@ -89,13 +89,13 @@ my_rd_init(const char* fname)
     } else {
       nameidx = DBFGetFieldIndex(ihandledb, opt_name);
       if (nameidx == -1) {
-        fatal(MYNAME ":dbf file for %s doesn't have '%s' field.\n", fname, opt_name);
+        fatal(MYNAME ":dbf file for %s doesn't have '%s' field.\n", qPrintable(fname), opt_name);
       }
     }
   } else {
     nameidx = DBFGetFieldIndex(ihandledb, "NAME");
     if (nameidx == -1) {
-//                     fatal(MYNAME ":dbf file for %s doesn't have 'NAME' field.\n  Please specify the name index with the 'name' option.\n", fname);
+//                     fatal(MYNAME ":dbf file for %s doesn't have 'NAME' field.\n  Please specify the name index with the 'name' option.\n", qPrintable(fname));
     }
   }
   if (opt_url) {
@@ -251,7 +251,7 @@ my_rd_deinit(void)
 }
 
 void
-my_wr_init(const char* fname)
+my_wr_init(const QString& fname)
 {
   ofname = fname;
 }
@@ -260,6 +260,7 @@ void
 my_wr_deinit(void)
 {
   SHPClose(ohandle);
+  ofname.clear();
 }
 
 void
@@ -316,20 +317,20 @@ my_write(void)
   switch (global_opts.objective) {
   case wptdata:
   case unknown_gpsdata:
-    ohandle = SHPCreate(ofname, SHPT_POINT);
+    ohandle = SHPCreate(qPrintable(ofname), SHPT_POINT);
 
     if (ohandle == NULL) {
       fatal(MYNAME ":Cannot open %s for writing\n",
-            ofname);
+            qPrintable(ofname));
     }
     waypt_disp_all(my_write_wpt);
     break;
   case trkdata:
-    ohandle = SHPCreate(ofname, SHPT_ARC);
+    ohandle = SHPCreate(qPrintable(ofname), SHPT_ARC);
 
     if (ohandle == NULL) {
       fatal(MYNAME ":Cannot open %s for writing\n",
-            ofname);
+            qPrintable(ofname));
     }
     route_disp_all(poly_init, poly_deinit, poly_point);
     break;
index e67ccda1aa042f7c606aad3a11c4ff918db58809..b5433925fdfda1d8c3790e606789f2246d5cf8b1 100644 (file)
@@ -236,7 +236,7 @@ skyforce_waypt_disp_cb(const Waypoint* wpt)
 *******************************************************************************/
 
 static void
-skyforce_rd_init(const char* fname)
+skyforce_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "r", MYNAME);
 }
@@ -318,7 +318,7 @@ skyforce_read(void)
 
 
 static void
-skyforce_wr_init(const char* fname)
+skyforce_wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "w", MYNAME);
 
index f3a4c73aab52ea16dd178c9656f4d0b0a8267a8f..3130bf24499da866d2ff2d709e40059e3b2b525e 100644 (file)
@@ -54,7 +54,6 @@
 #define MAX(X,Y) ((X) > (Y) ? (X) : (Y))
 
 
-static char* port;                     /* port name */
 static void* serial_handle = 0;                /* IO file descriptor */
 static int skytraq_baud = 0;           /* detected baud rate */
 static gbfile* file_handle = 0;                /* file descriptor (used by skytraq-bin format) */
@@ -1283,14 +1282,13 @@ skytraq_set_location(void)
 *******************************************************************************/
 
 static void
-skytraq_rd_init(const char* fname)
+skytraq_rd_init(const QString& fname)
 {
-  port = xstrdup(fname);
-  if ((serial_handle = gbser_init(fname)) == NULL) {
-    fatal(MYNAME ": Can't open port '%s'\n", fname);
+  if ((serial_handle = gbser_init(qPrintable(fname))) == NULL) {
+    fatal(MYNAME ": Can't open port '%s'\n", qPrintable(fname));
   }
   if ((skytraq_baud = skytraq_probe()) <= 0) {
-    fatal(MYNAME ": Can't find skytraq device on '%s'\n", fname);
+    fatal(MYNAME ": Can't find skytraq device on '%s'\n", qPrintable(fname));
   }
 }
 
@@ -1299,7 +1297,6 @@ skytraq_rd_deinit(void)
 {
   gbser_deinit(serial_handle);
   serial_handle = NULL;
-  xfree(port);
 }
 
 static void
@@ -1338,11 +1335,11 @@ skytraq_read(void)
 }
 
 static void
-file_init(const char* fname)
+file_init(const QString& fname)
 {
   db(1, "Opening file...\n");
   if ((file_handle = gbfopen(fname, "rb", MYNAME)) == NULL) {
-    fatal(MYNAME ": Can't open file '%s'\n", fname);
+    fatal(MYNAME ": Can't open file '%s'\n", qPrintable(fname));
   }
 }
 
@@ -1594,9 +1591,9 @@ static int miniHomer_set_poi(uint16_t poinum, const char* opt_poi)
   }
   return result;
 }
-static const char* mhport;
+static QString mhport;
 static void
-miniHomer_rd_init(const char* fname)
+miniHomer_rd_init(const QString& fname)
 {
   opt_set_location=NULL;       // otherwise it will lead to bus error
   skytraq_rd_init(fname);      // sets global var serial_handle
@@ -1606,6 +1603,7 @@ static void
 miniHomer_rd_deinit(void)
 {
   skytraq_rd_deinit();
+  mhport.clear();
 }
 #define SETPOI(poinum, poiname) if (opt_set_poi_##poiname )  {miniHomer_set_poi(poinum, opt_set_poi_##poiname);}
 static void
index 080c4479e472bbf8c584323142576fecff3a7e13..b94f9dcbd2571cdc2f242afd8902bdc36591da37 100644 (file)
--- a/stmsdf.cc
+++ b/stmsdf.cc
@@ -359,7 +359,7 @@ parse_point(char* line)
 /* ----------------------------------------------------------- */
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "r", MYNAME);
 
@@ -671,7 +671,7 @@ track_disp_custom_cb(const Waypoint* wpt)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   fout = gbfopen(fname, "w", MYNAME);
   short_h = mkshort_new_handle();
index 3097bd72fa3615329c9a7e2d079da1667da3dc2f..fcc3336773b07e24fe0d077a8db39b0ab2c82e08 100644 (file)
--- a/stmwpp.cc
+++ b/stmwpp.cc
@@ -60,7 +60,7 @@ arglist_t stmwpp_args[] = {
 
 
 static void
-stmwpp_rd_init(const char* fname)
+stmwpp_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "rb", MYNAME);
   track = NULL;
@@ -194,7 +194,7 @@ stmwpp_data_read(void)
 }
 
 static void
-stmwpp_rw_init(const char* fname)
+stmwpp_rw_init(const QString& fname)
 {
   fout = gbfopen(fname, "wb", MYNAME);
   short_h = mkshort_new_handle();
index d4e23a6d45256030e36af1a431c4569aed36dfd8..60e8902123130eac532f258dec25ff42946ca9c9 100644 (file)
--- a/subrip.cc
+++ b/subrip.cc
@@ -195,7 +195,7 @@ subrip_trkpt_pr(const Waypoint* waypointp)
 /* global callback (exported) functions */
 
 static void
-subrip_wr_init(const char* fname)
+subrip_wr_init(const QString& fname)
 {
   time_t gpstime_t;
   struct tm* ptm_gps;
index c8a64f8d85f2eed1360d5fca8cf5453cd37db781..b32d69b3af633157c9b453022370858d8a15429c 100644 (file)
@@ -299,7 +299,7 @@ tef_point(xg_string args, const QXmlStreamAttributes* attrv)
 }
 
 static void
-tef_xml_rd_init(const char* fname)
+tef_xml_rd_init(const QString& fname)
 {
   wpt_tmp = NULL;
   waypoints = 0;
index ca27ad07d542c89f65de2d471ea95c8b4bed7e87..f25a26b0823c7f27e97c686e26d79381a713faf1 100644 (file)
@@ -38,7 +38,7 @@ static uint32_t tty_wpt_count;
 static gbfile* fin;
 
 static void
-teletype_rd_init(const char* fname)
+teletype_rd_init(const QString& fname)
 {
   char header[64];
 
diff --git a/text.cc b/text.cc
index f55cf8cc956aed2287698e7a48874b7082f56f55..ab40eee170da998301ceb2b534dc938cdd420805 100644 (file)
--- a/text.cc
+++ b/text.cc
@@ -36,7 +36,7 @@ static char* degformat = NULL;
 static char* altunits = NULL;
 static char* split_output = NULL;
 static int waypoint_count;
-static char* output_name;
+static QString output_name;
 
 #define MYNAME "TEXT"
 
@@ -74,10 +74,10 @@ arglist_t text_args[] = {
 
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   waypoint_count = 0;
-  output_name = xstrdup(fname);
+  output_name = fname;
   if (!split_output) {
     file_out = gbfopen(fname, "w", MYNAME);
   }
@@ -91,7 +91,7 @@ wr_deinit(void)
     gbfclose(file_out);
   }
   mkshort_del_handle(&mkshort_handle);
-  xfree(output_name);
+  output_name.clear();
 }
 
 static void
index 32e187366ee1ef90aa36abb4e2d5913a9db4d4e2..6d1e2d64e518f9af90947b5b08b862e4e21824fa 100644 (file)
--- a/tiger.cc
+++ b/tiger.cc
@@ -126,7 +126,7 @@ arglist_t tiger_args[] = {
 
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen(fname, "rb", MYNAME);
   mkshort_handle = mkshort_new_handle();
@@ -140,7 +140,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen(fname, "w", MYNAME);
   thresh_days = strtod(oldthresh, NULL);
index 26c5fb7818482e7eb95708ac4e3b0626ac211977..083eb489d10af4abab5b922fb721b4fe8f487270 100644 (file)
--- a/tmpro.cc
+++ b/tmpro.cc
@@ -43,7 +43,7 @@ static gbfile* file_in, *file_out;
 static short_handle mkshort_handle;
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen(fname, "rb", MYNAME);
 }
@@ -55,7 +55,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen(fname, "w", MYNAME);
 }
index 6e8bddf1d42653601a8851d9618e18640edc98d5..2ddc4309b98752b526141a00b876a6064a1943b0 100644 (file)
--- a/tomtom.cc
+++ b/tomtom.cc
@@ -54,7 +54,7 @@ arglist_t tomtom_args[] = {
 };
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   file_in = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -66,7 +66,7 @@ rd_deinit(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen_le(fname, "wb", MYNAME);
 }
diff --git a/tpg.cc b/tpg.cc
index 0c399591faf55351557cc295b747b07fe01e419d..8e710ba7a692c93df276a03deda3c83cac8d3eda 100644 (file)
--- a/tpg.cc
+++ b/tpg.cc
@@ -69,7 +69,7 @@ tpg_common_init(void)
 }
 
 static void
-tpg_rd_init(const char* fname)
+tpg_rd_init(const QString& fname)
 {
   tpg_common_init();
   tpg_file_in = gbfopen_le(fname, "rb", MYNAME);
@@ -82,7 +82,7 @@ tpg_rd_deinit(void)
 }
 
 static void
-tpg_wr_init(const char* fname)
+tpg_wr_init(const QString& fname)
 {
   tpg_common_init();
   tpg_file_out = gbfopen_le(fname, "wb", MYNAME);
diff --git a/tpo.cc b/tpo.cc
index 90060fe57d2f62e14952cbadab441f0bf99a84da..be4d932a49f9aaee60fdff2742e5c30a151fc6b6 100644 (file)
--- a/tpo.cc
+++ b/tpo.cc
@@ -1392,7 +1392,7 @@ void tpo_read_3_x(void)
 
 
 static void
-tpo_rd_init(const char* fname)
+tpo_rd_init(const QString& fname)
 {
 
   // preprare for an attempt to deallocate memory that may or may not get allocated
@@ -1879,7 +1879,7 @@ tpo_track_tlr(const route_head* rte)
 }
 
 static void
-tpo_wr_init(const char* fname)
+tpo_wr_init(const QString& fname)
 {
   if (doing_wpts || doing_rtes) {
     fatal(MYNAME ": this file format only supports tracks, not waypoints or routes.\n");
index 6a2830ca0ed88f37934f25159f4cedf4c4b117bd..c283a3d7ba44f0ba16dc71c6e2aafbc67fb3d0b1 100644 (file)
--- a/unicsv.cc
+++ b/unicsv.cc
@@ -590,7 +590,7 @@ unicsv_fondle_header(QString s)
 }
 
 static void
-unicsv_rd_init(const char* fname)
+unicsv_rd_init(const QString& fname)
 {
   char* c;
   unicsv_altscale = 1.0;
@@ -1834,7 +1834,7 @@ unicsv_waypt_disp_cb(const Waypoint* wpt)
 
 
 static void
-unicsv_wr_init(const char* filename)
+unicsv_wr_init(const QString& filename)
 {
   fout = gbfopen(filename, "wb", MYNAME);
 
diff --git a/util.cc b/util.cc
index fb561f57ec1b68ea5ec7c6fbe5386285155b0ed0..f3cc17abee42f2a4f44741a4a9e58812cc789e62 100644 (file)
--- a/util.cc
+++ b/util.cc
@@ -31,6 +31,7 @@
 #include <stdlib.h>
 #include <stdarg.h> // for va_copy
 #include <time.h>
+#include <QtCore/QFileInfo>
 
 // First test Apple's clever macro that's really a runtime test so
 // that our universal binaries work right.
@@ -1792,24 +1793,9 @@ char* xml_attribute(xml_tag* tag, const char* attrname)
   return result;
 }
 
-const char* get_filename(const char* fname)
+const QString get_filename(const QString& fname)
 {
-  const char* res;
-  const char* cb;
-  const char* cs;
-
-  cb = strrchr(fname, '\\');
-  cs = strrchr(fname, '/');
-
-  if (cb == NULL) {
-    res = cs;
-  } else if (cs == NULL) {
-    res = cb;
-  } else {
-    res = (cs > cb) ? cs : cb;
-  }
-
-  return (res == NULL) ? (char*) fname : ++res;
+  return  QFileInfo(fname).fileName();
 }
 
 /* bit manipulation functions */
diff --git a/v900.cc b/v900.cc
index 16c4860b2743f7980734965fb170ac086a0cdbab..888387d727ef8febb090917f64b19414dd73da76 100644 (file)
--- a/v900.cc
+++ b/v900.cc
@@ -159,16 +159,16 @@ v900_log(const char* fmt, ...)
 }
 
 static void
-v900_rd_init(const char* fname)
+v900_rd_init(const QString& fname)
 {
-  v900_log("%s(%s)\n",__func__,fname);
+  v900_log("%s(%s)\n",__func__,qPrintable(fname));
   /* note: file is opened in binary mode, since lines end with \r\n, and in windows text mode
      that will be translated to a single \n, making the line len one character shorter than
      on linux machines.
    */
-  fin = fopen(fname,"rb");
+  fin = fopen(qPrintable(fname),"rb");
   if (!fin) {
-    fatal("v900: could not open '%s'.\n", fname);
+    fatal("v900: could not open '%s'.\n", qPrintable(fname));
   }
 }
 
diff --git a/vcf.cc b/vcf.cc
index 740e3e891fbd5d89acc4aa7496e9ca4a9f24c363..aecef69401dd0ae0e57166926b1bd0188186feb2 100644 (file)
--- a/vcf.cc
+++ b/vcf.cc
@@ -41,7 +41,7 @@ arglist_t vcf_args[] = {
 };
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   file_out = gbfopen(fname, "w", MYNAME);
   mkshort_handle = mkshort_new_handle();
index a4d42d0f88928a0c2520429f2f2b95f30159558d..72d7756bf7cb02c84a7d76f99b93d900f380a3dc 100644 (file)
@@ -59,7 +59,7 @@ static gbfile* fin, *fout;
 *******************************************************************************/
 
 static void
-vidaone_rd_init(const char* fname)
+vidaone_rd_init(const QString& fname)
 {
   vidaone_ver = atoi(vidaone_opt_ver);
   fin = gbfopen(fname, "rb", MYNAME);
@@ -101,7 +101,7 @@ vidaone_read(void)
 }
 
 static void
-vidaone_wr_init(const char* fname)
+vidaone_wr_init(const QString& fname)
 {
   vidaone_ver = atoi(vidaone_opt_ver);
   fout = gbfopen(fname, "wb", MYNAME);
index 6d1471360385849e15bb58195ee13f1945249097..61ea029d63ce5b9cef0328ea8cb3319fd3ce4df9 100644 (file)
@@ -54,7 +54,7 @@ WriteDouble(void* ptr, double d)
 
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   infile = gbfopen_le(fname, "rb", MYNAME);
 }
@@ -220,7 +220,7 @@ vitosmt_read(void)
 }
 
 static void
-wr_init(const char* fname)
+wr_init(const QString& fname)
 {
   warning(MYNAME " write: format is experimental and may crash Vito Navigator II.\n");
   ofs = gbfopen_le(fname, "wb", MYNAME);
index 4101ea1e978021e71044d5c6ca39b6464879f43a..2a3b5ce967bc5b8249555945d8aa10d3eade0190 100644 (file)
@@ -43,7 +43,7 @@ static const int                      vitovtt_secondscale                     = 30000000;
 static const int                       vitovtt_microsecondscale        = 30;
 
 static void
-rd_init(const char* fname)
+rd_init(const QString& fname)
 {
   infile = gbfopen_le(fname, "rb", MYNAME);
 }
diff --git a/vpl.cc b/vpl.cc
index 8e845b872abe90c45dde065eb6706899dbc4dbc4..3db5cb9f102d5d73f547cd984dcde0eb3f4fc326 100644 (file)
--- a/vpl.cc
+++ b/vpl.cc
@@ -126,7 +126,7 @@ static route_head* track_head;
 *******************************************************************************/
 
 static void
-vpl_rd_init(const char* fname)
+vpl_rd_init(const QString& fname)
 {
   vpl_file_in = gbfopen(fname, "r", MYNAME);
 }
@@ -156,7 +156,7 @@ vpl_read(void)
 }
 
 static void
-vpl_wr_init(const char* fname)
+vpl_wr_init(const QString& fname)
 {
   fatal("Writing file of type %s is not support\n", MYNAME);
 }
index d4698b87c4dcdfea9e29571a9a6c56f291233d50..19ea0f9edd288084987ed01984be6ab692b3130c 100644 (file)
@@ -392,9 +392,9 @@ static wintec_gps_types guess_device()
 
 }
 
-static void rd_init(const char* fname)
+static void rd_init(const QString& fname)
 {
-  port = xstrdup(fname);
+  port = xstrdup(qPrintable(fname));
 
   db(1, "Opening port...\n");
   if ((fd = gbser_init(port)) == NULL) {
@@ -427,11 +427,11 @@ static int rd_buf(void* buf, int len)
   return 1;
 }
 
-static void file_init(const char* fname)
+static void file_init(const QString& fname)
 {
   db(1, "Opening file...\n");
-  if ((fl = fopen(fname, "rb")) == NULL) {
-    fatal(MYNAME ": Can't open file '%s'\n", fname);
+  if ((fl = fopen(qPrintable(fname), "rb")) == NULL) {
+    fatal(MYNAME ": Can't open file '%s'\n", qPrintable(fname));
   }
 }
 
index dc808b5fb1c293f9b160477e758938880158488a..d010c0e1595b78cabc39be16ed920ad8419fe701 100644 (file)
@@ -200,7 +200,7 @@ void wfff_e(xg_string args, const QXmlStreamAttributes*)
 }
 
 void
-wfff_xml_rd_init(const char* fname)
+wfff_xml_rd_init(const QString& fname)
 {
   tosscount = 0;
 
index 117ead718029a74508788c792833d55c16921e51..8b6ffe021810beef1a4ffac2efd62fbeb7640627 100644 (file)
@@ -27,7 +27,7 @@
 static gbfile* fin;
 
 static void
-wintec_tes_rd_init(const char* fname)
+wintec_tes_rd_init(const QString& fname)
 {
   fin = gbfopen(fname, "r", MYNAME);
 }
diff --git a/xcsv.cc b/xcsv.cc
index 8b2e65581b336f81c667c598bb8a17cf98dcbaf9..a535554e79ee1f57f447ad0be2d0b667725a5239 100644 (file)
--- a/xcsv.cc
+++ b/xcsv.cc
@@ -531,7 +531,7 @@ xcsv_setup_internal_style(const char* style_buf)
 
 
 static void
-xcsv_rd_init(const char* fname)
+xcsv_rd_init(const QString& fname)
 {
 
   /*
@@ -550,7 +550,7 @@ xcsv_rd_init(const char* fname)
 
   if ((xcsv_file.datatype == 0) || (xcsv_file.datatype == wptdata)) {
     if (global_opts.masked_objective & (TRKDATAMASK|RTEDATAMASK)) {
-      warning(MYNAME " attempt to read %s as a track or route, but this format only supports waypoints on read.  Reading as waypoints instead.\n", fname);
+      warning(MYNAME " attempt to read %s as a track or route, but this format only supports waypoints on read.  Reading as waypoints instead.\n", qPrintable(fname));
     }
   }
 
@@ -568,7 +568,7 @@ xcsv_rd_deinit(void)
 }
 
 static void
-xcsv_wr_init(const char* fname)
+xcsv_wr_init(const QString& fname)
 {
   /* if we don't have an internal style defined, we need to
    * read it from a user-supplied style file, or die trying.
@@ -587,7 +587,7 @@ xcsv_wr_init(const char* fname)
   }
 
   xcsv_file.xcsvfp = gbfopen(fname, "w", MYNAME);
-  xcsv_file.fname = (char*)fname;
+  xcsv_file.fname = fname;
 
   /* set mkshort options from the command line */
   if (global_opts.synthesize_shortnames) {
@@ -616,7 +616,7 @@ xcsv_wr_init(const char* fname)
 }
 
 static void
-xcsv_wr_position_init(const char* fname)
+xcsv_wr_position_init(const QString& fname)
 {
   xcsv_wr_init(fname);
 }
index c7a123be26847be4b2f1a30642be4951e90d6267..570bb9dddff7c9d9ece73356f72cf02c89145320 100644 (file)
@@ -39,7 +39,7 @@ static QString current_tag;
 static xg_tag_mapping* xg_tag_tbl;
 static QSet<QString> xg_ignore_taglist;
 
-static const char* rd_fname;
+static QString rd_fname;
 static QByteArray reader_data;
 static const char* xg_encoding;
 static QTextCodec* utf8_codec = QTextCodec::codecForName("UTF-8");
@@ -70,7 +70,7 @@ xml_tbl_lookup(const QString& tag, xg_cb_type cb_type)
 }
 
 void
-xml_init(const char* fname, xg_tag_mapping* tbl, const char* encoding)
+xml_init(const QString& fname, xg_tag_mapping* tbl, const char* encoding)
 {
   rd_fname = fname;
   xg_tag_tbl = tbl;
@@ -87,7 +87,7 @@ void
 xml_deinit(void)
 {
   reader_data.clear();
-  rd_fname = NULL;
+  rd_fname.clear();
   xg_tag_tbl = NULL;
   xg_encoding = NULL;
   codec = utf8_codec;
index 675a517f943f61e1ef70c5103f24fd083d6072bc..487866d1ddc8a34e1ccbb5ecb0bf6b222a10dc31 100644 (file)
@@ -39,7 +39,7 @@ typedef struct xg_tag_mapping {
 extern const char* xhtml_entities;
 void xml_ignore_tags(const char** taglist);
 
-void xml_init(const char* fname, xg_tag_mapping* tbl,const char* encoding);
+void xml_init(const QString& fname, xg_tag_mapping* tbl,const char* encoding);
 void xml_init_offset(const char* fname, xg_tag_mapping* tbl,
                      const char* encoding, gbsize_t offset);
 void xml_read(void);
diff --git a/xol.cc b/xol.cc
index 6f162f4d9ef1c5db1ead38df6cff2f73d6046e91..68afca68576721d0dcddf3ed30098c6f23939b1c 100644 (file)
--- a/xol.cc
+++ b/xol.cc
@@ -131,7 +131,7 @@ static void xol_waypt(xg_string args, const QXmlStreamAttributes* attrv) {
   GPS_Math_Swiss_EN_To_WGS84(x, y, &wpt->latitude, &wpt->longitude);
 }
 
-static void xol_rd_init(const char* fname) {
+static void xol_rd_init(const QString& fname) {
   trk = NULL;
   wpt = NULL;
 
@@ -155,7 +155,7 @@ static void xol_waypt_bound_calc(const Waypoint* wpt) {
   waypt_add_to_bounds(&all_bounds, wpt);
 }
 
-static void xol_wr_init(const char* fname) {
+static void xol_wr_init(const QString& fname) {
   oqfile = new gpsbabel::File(fname);
   oqfile->open(QIODevice::WriteOnly | QIODevice::Text);
 
index 9aec81cb453bbebdbbb617b305cd139aa13b745b..b7cda7311d421d3dcac098907136856ce38be793 100644 (file)
--- a/yahoo.cc
+++ b/yahoo.cc
@@ -55,7 +55,7 @@ static xg_tag_mapping gl_map[] = {
 };
 
 static void
-yahoo_rd_init(const char* fname)
+yahoo_rd_init(const QString& fname)
 {
   xml_init(fname, gl_map, NULL);
 }
@@ -73,7 +73,7 @@ yahoo_rd_deinit(void)
 }
 
 static void
-yahoo_wr_init(const char* fname)
+yahoo_wr_init(const QString& fname)
 {
   fatal("Writing file of type %s is not supported\n", MYNAME);
 }